31

ストアドプロシージャが新しく、テーブル変数に複合プライマリキーを追加しようとしました。ストアドプロシージャのテーブル変数の複合プライマリキー

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

私は

Incorrect syntax near '@statistictemp'. Expecting ID, QUOTED_ID, or '.'.

は、私がここで間違って何をしているのですか?と言っALTER TABLE @statistictemp上のエラーを取得していますかどのように複合主キーをテーブル変数に追加しますか?

答えて

66

あなたはこのようにそれを行うことができます:あなたは主キー制約は重複を挿入しようとすることで動作することをテストすることができ

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

を: 例えば、

INSERT INTO @statistictemp(MajorName, SubName, DetailedName, UniversityID) SELECT 'a','b','c',1 
INSERT INTO @statistictemp(MajorName, SubName, DetailedName, UniversityID) SELECT 'a','b','c',1 

番目のステートメントは、エラーがスローされます:

Msg 2627, Level 14, State 1, Line 13
Violation of PRIMARY KEY constraint 'PK_#1EA48E8_B595483D208CD6FA'. Cannot insert duplicate key in object '[email protected]'.
The statement has been terminated.

関連する問題