我是存储过程的新手,并尝试将复合主键添加到表变量中。
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 '.'.
我在这里做错了什么?如何将复合主键添加到表变量?
答案 0 :(得分:81)
你可以这样做:
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
第二个语句会抛出错误:
Ms 2627,Level 14,State 1,Line 13
违反PRIMARY KEY约束'PK_ #1EA48E8 _B595483D208CD6FA'。无法插入重复键 对象'dbo。@ statistictemp'。
声明已经终止。