/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MSSQL 2005 og 2-felts primary key
Fra : Janus


Dato : 29-01-07 21:51

Hej NG!

Jeg er ved at oprette en database i MSSQL 2005.
Jeg vil gerne have en tabel, hvor PK består af 2 felter. Tabellen Table1
har 2 felter, hhv. "name" (varchar) og "version" (int) således at:

tupel (A, 1) er ok
tupel (A, 2) er ok
tupel (B, 1) er ok
tupel (B, 2) er ok

-men at det så selvfølgelig ikke kan lade sig gøre at indsætte tuplerne
mere end én gang :)

Jeg har forsøgt mig med: add constraint const_Table1 primary key (name,
version)

-og det æder SQL enginen fint nok, der kommer endda også 2
nøgle-tegninger ud for de to felter i det dér database management program.

Menmenmen, ak og ve! Jeg kan fint indsætte eksempelvis (A, 1) og (M, 6),
men jeg kan skisme ikke indsætte (B, 1) eller (Q, 1)! Er den constraint
jeg har sat op rent faktisk to individuelle PK's?

Jeg er dum-i-arbejde mht. SQL, og har ingen erfaringer med Microsofts
databaser, så bær over med mig...


Pft,
Janus




 
 
Anders Matthiessen (30-01-2007)
Kommentar
Fra : Anders Matthiessen


Dato : 30-01-07 12:14

"Janus" <invalid@invalid.dk> wrote in message
news:45be5e46$0$4175$ba624c82@nntp02.dk.telia.net...

> Jeg er ved at oprette en database i MSSQL 2005.
> Jeg vil gerne have en tabel, hvor PK består af 2 felter. Tabellen Table1
> har 2 felter, hhv. "name" (varchar) og "version" (int) således at:

Den her vil kunne hjælpe dig
http://www.thescripts.com/forum/thread79190.html

/Anders






Jens Gyldenkærne Cla~ (30-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-01-07 13:30

Janus skrev:

> Jeg har forsøgt mig med: add constraint const_Table1 primary
> key (name, version)

Hvordan ser din præcise sql-sætning ud?

> -og det æder SQL enginen fint nok, der kommer endda også 2
> nøgle-tegninger ud for de to felter i det dér database
> management program.

Det lyder rigtigt.


> Menmenmen, ak og ve! Jeg kan fint indsætte eksempelvis (A, 1)
> og (M, 6), men jeg kan skisme ikke indsætte (B, 1) eller (Q,
> 1)! Er den constraint jeg har sat op rent faktisk to
> individuelle PK's?

Nej. Der kan ikke være to PK'er i en tabel, så det er ikke derfor
at dine indsættelser fejler. Har du evt. defineret et andet unikt
indeks på felterne?

Følgende test-script fungerer fint her:


CREATE TABLE test (
   name varchar(3) NOT NULL,
   version int NOT NULL,
   info varchar(100),
   PRIMARY KEY (name, version)
)

GO
INSERT INTO test (name, version)
VALUES ('A', 1)
INSERT INTO test (name, version)
VALUES ('A', 2)
INSERT INTO test (name, version)
VALUES ('Q', 1)
-- 3 rækker indsat, tjek med select:

SELECT * FROM test

-- Test en dubletindsættelse (MSSQL vil afvise indsættelsen)
INSERT INTO test (name, version)
VALUES ('A', 2)
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Janus (17-02-2007)
Kommentar
Fra : Janus


Dato : 17-02-07 10:16

Jens Gyldenkærne Clausen wrote:
> Janus skrev:
>
>> Jeg har forsøgt mig med: add constraint const_Table1 primary
>> key (name, version)
>
> Hvordan ser din præcise sql-sætning ud?
>
>> -og det æder SQL enginen fint nok, der kommer endda også 2
>> nøgle-tegninger ud for de to felter i det dér database
>> management program.
>
> Det lyder rigtigt.
>
>

-Og det var også rigtigt nok! Jeg påtager mig hele skylden og deler
kvajebajere ud til højre og venstre: Jeg havde glemt at fjerne
keyword'et "UNIQUE" fra de to kolonner, der indgik i min PK constraint
(SQL'en konverteret fra McKoi-format).

Btw, undskyld det sene svar


Vh Janus

Jens Gyldenkærne Cla~ (17-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-02-07 17:36

Janus skrev:

> -Og det var også rigtigt nok! Jeg påtager mig hele skylden og
> deler kvajebajere ud til højre og venstre:

Super - hvor skal vi hente dem?

> Btw, undskyld det sene svar

Helt i orden.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177449
Tips : 31962
Nyheder : 719565
Indlæg : 6408120
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste