Ich bin neu in gespeicherten Prozeduren und versuche, einer Tabellenvariablen einen zusammengesetzten Primärschlüssel hinzuzufügen.
DECLARE @statistictemp TABLE (
MajorName VARCHAR(50) NOT NULL,
SubName VARCHAR(50) NOT NULL,
DetailedName VARCHAR(50) NOT NULL,
UniversityID SMALLINT NOT NULL,
StatisticValue DECIMAL(9,3)
);
ALTER TABLE @statistictemp
ADD CONSTRAINT pk_statistictemp
PRIMARY KEY (MajorName, SubName, DetailedName, UniversityID);
Ich erhalte einen Fehler bei ALTER TABLE @statistictemp
Sprichwort
Incorrect syntax near '@statistictemp'. Expecting ID, QUOTED_ID, or '.'.
Was mache ich hier falsch? Wie fügt man einer Tabellenvariablen einen zusammengesetzten Primärschlüssel hinzu?
Du kannst es so machen:
DECLARE @statistictemp TABLE (
MajorName VARCHAR(50) NOT NULL,
SubName VARCHAR(50) NOT NULL,
DetailedName VARCHAR(50) NOT NULL,
UniversityID SMALLINT NOT NULL,
StatisticValue DECIMAL(9,3),
PRIMARY KEY (MajorName, SubName, DetailedName, UniversityID)
);
Sie können testen, ob die Primärschlüsseleinschränkung funktioniert, indem Sie versuchen, Duplikate einzufügen: z.
INSERT INTO @statistictemp(MajorName, SubName, DetailedName, UniversityID) SELECT 'a','b','c',1
INSERT INTO @statistictemp(MajorName, SubName, DetailedName, UniversityID) SELECT 'a','b','c',1
Die zweite Anweisung löst einen Fehler aus:
Meldung 2627, Ebene 14, Status 1, Zeile 13
Verletzung der PRIMARY KEY-Einschränkung 'PK _# 1EA48E8 _ B595483D208CD6FA'. Es kann kein doppelter Schlüssel in Objekt 'dbo. @ Statistictemp' eingefügt werden.
Die Anweisung wurde beendet.