programing

저장 프로시저의 테이블에 있는 복합 기본 키 변수

cafebook 2023. 7. 7. 21:06
반응형

저장 프로시저의 테이블에 있는 복합 기본 키 변수

저장 프로시저를 처음 사용하여 테이블 변수에 복합 기본 키를 추가하려고 합니다.

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

두 번째 문은 오류를 발생시킵니다.

Msg 2627, 레벨 14, 상태 1, 라인 13
Primary KEY 제약 조건 'PK_#1EA48E8_B595483D208CD6 위반FA'. 개체 'dbo'에 중복 키를 삽입할 수 없습니다.@열풍'
문이 종료되었습니다.

언급URL : https://stackoverflow.com/questions/9323533/composite-primary-key-on-table-variable-in-stored-procedure

반응형