SET CONSTRAINTS
SET CONSTRAINTS는 현재 트랜잭션 내에서 외래 키 제약 조건 검사의 동작을 설정합니다.
지원되는 구문
SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }
설명
SET CONSTRAINTS는 현재 트랜잭션 내에서 제약 조건 검사 동작을 설정합니다. IMMEDIATE 제약 조건은 각 문이 끝날 때 검사됩니다. DEFERRED 제약 조건은 트랜잭션이 커밋될 때까지 검사되지 않습니다. 각 제약 조건에는 자체 IMMEDIATE 또는 DEFERRED 모드가 있습니다.
제약 조건을 생성할 때 DEFERRABLE INITIALLY DEFERRED, DEFERRABLE INITIALLY IMMEDIATE 또는 NOT DEFERRABLE 세 가지 특성 중 하나를 할당합니다. 세 번째 클래스는 항상 IMMEDIATE이며 SET CONSTRAINTS 명령은 이를 변경하지 않습니다. 처음 두 클래스는 표시된 모드에서 모든 트랜잭션을 시작하지만 SET CONSTRAINTS에서 트랜잭션 내에서 동작을 변경할 수 있습니다.
제약 조건 이름 목록이 있는 SET CONSTRAINTS는 해당 제약 조건의 모드만 변경합니다. 이름이 지정된 모든 제약 조건은 지연 가능해야 합니다. SET CONSTRAINTS
ALL은 지연 가능한 모든 제약 조건의 모드를 변경합니다.
SET CONSTRAINTS가 제약 조건의 모드를 DEFERRED에서 IMMEDIATE로 변경하면 새 모드가 소급 적용됩니다. Aurora DSQL은 그렇지 않았다면 트랜잭션이 종료될 때까지 지연되었을 미처리 데이터 수정 사항을 즉시 검사합니다. 이러한 제약 조건이 위반되면 SET CONSTRAINTS 명령이 실패하고 제약 조건 모드가 변경되지 않습니다.
이러한 지연 가능성 옵션(DEFERRABLE, NOT
DEFERRABLE, INITIALLY DEFERRED, INITIALLY IMMEDIATE)에 대한 설명은 CREATE TABLE 페이지의 지연 가능성 섹션을 참조하세요.
외래 키 제약 조건만 해당
Aurora DSQL에서 SET CONSTRAINTS는 외래 키 제약 조건에만 적용됩니다. 프라이머리 키, 고유, NOT NULL 및 CHECK 제약 조건은 SET CONSTRAINTS ALL DEFERRED를 실행하더라도 행이 삽입되거나 수정될 때 항상 즉시 검사됩니다.
참고
Aurora DSQL은 현재 트랜잭션 내에서만 제약 조건의 동작을 변경합니다. SET CONSTRAINTS를 사용하려면 명시적 트랜잭션 블록 내에서 실행합니다.
호환성
이 명령은 SQL 표준에 정의된 동작을 따르지만, Aurora DSQL은 외래 키 제약 조건에 대해서만 지연을 지원한다는 제약 사항이 있습니다.