ストアドプロシージャを初めて使用し、複合主キーをテーブル変数に追加しようとしています。
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);
ALTER TABLE @statistictemp
でエラーが発生しています
Incorrect syntax near '@statistictemp'. Expecting ID, QUOTED_ID, or '.'.
ここで何が間違っていますか?複合主キーをテーブル変数にどのように追加しますか?
次のようにできます:
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
2番目のステートメントはエラーをスローします。
メッセージ2627、レベル14、状態1、行13
PRIMARY KEY制約 'PK _#1EA48E8 _ B595483D208CD6FA'の違反。オブジェクト 'dbo。@ statistictemp'に重複キーを挿入できません。
ステートメントは終了されました。