|
| 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
| |
|
|