Je suis nouveau dans les procédures stockées et j'essaie d'ajouter une clé primaire composite à une variable de table.
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);
Je reçois une erreur sur ALTER TABLE @statistictemp
en disant
Incorrect syntax near '@statistictemp'. Expecting ID, QUOTED_ID, or '.'.
Qu'est-ce que je fais mal ici? Comment ajouter une clé primaire composite à une variable de table?
Vous pouvez le faire comme ceci:
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)
);
Vous pouvez tester le fonctionnement de la contrainte de clé primaire en essayant d'insérer des doublons: par exemple,
INSERT INTO @statistictemp(MajorName, SubName, DetailedName, UniversityID) SELECT 'a','b','c',1
INSERT INTO @statistictemp(MajorName, SubName, DetailedName, UniversityID) SELECT 'a','b','c',1
La deuxième instruction générera une erreur:
Msg 2627, niveau 14, état 1, ligne 13
Violation de la contrainte PRIMARY KEY 'PK _# 1EA48E8 _ B595483D208CD6FA'. Impossible d'insérer une clé en double dans l'objet 'dbo. @ Statistictemp'.
La déclaration est terminée.