31

Tôi mới làm thủ tục được lưu trữ và cố gắng thêm khóa chính kết hợp vào biến bảng.Phím chính tổng hợp trên biến bảng Trong quy trình được lưu

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

tôi nhận được một lỗi trên ALTER TABLE @statistictemp nói

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

Tôi đang làm gì sai ở đây? Làm cách nào để bạn thêm khóa chính kết hợp vào biến bảng?

Trả lời

66

Bạn có thể làm điều đó như thế này:

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

Bạn có thể kiểm tra xem chế khóa chính hoạt động bằng cách cố gắng để chèn bản sao: ví dụ:

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

Những tuyên bố thứ hai sẽ ném ra một lỗi :

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.