13.1.20.6 CHECK Constraints
Prior to MySQL 8.0.16, CREATE TABLE
permits only the following limited version of table CHECK
constraint syntax, which is parsed and ignored:
CHECK (expr)
As of MySQL 8.0.16, CREATE TABLE
permits the core features of table and column CHECK
constraints, for all storage engines. CREATE TABLE
CHECK
제약 조건을 구문 모두에 대한 테이블 제약 조건과 열 제약 사항이 있습니다.
] CHECK (expr) ENFORCED]
선택 사항symbol
의 이름을 지정한 제약 조건이 있습니다. 테이블 이름,리터럴(1,2,3,)및 서수(1,2,3,)를 생성합니다…). 제약 조건 이름의 최대 길이는 64 자입니다. 대/소문자를 구분하지만 악센트는 구분하지 않습니다.
expr
TRUE
UNKNOWN
NULL
값)은 각 행에 대해의 테이블. 이 경우 제약 조건 위반이 발생합니다. 위반의 효과는 이 섹션의 뒷부분에 설명된 대로 실행 중인 문에 따라 달라집니다. 선택적 적용 절은 제약 조건이 적용되는지 여부를 나타냅니다:
-
경우를 생략하거나로 지정한
ENFORCED
제약 조건이 생성되고 적용됩니다. 이 경우 제약 조건은 생성되지만 적용되지는 않습니다.
CHECK
제약 조건을 지정 중 하나로 테이블의 제 또는 열조건
-
테이블의 제약 조건이 나타나지 않는 열 내에서 정의 및 참조할 수 있습니다 테이블에 열 또는 열이 있습니다. 테이블 정의의 뒷부분에 나오는 열에 대한 순방향 참조가 허용됩니다. 열 제약 조건은 열 정의 내에 나타나며 해당 열만 참조할 수 있습니다.
이를 고려한 테이블의 정의
CREATE TABLE t1( CHECK (c1 <> c2), c1 INT CHECK (c1 > 10), c2 INT CONSTRAINT c2_positive CHECK (c2 > 0), c3 INT CHECK (c3 < 100), CONSTRAINT c1_nonzero CHECK (c1 <> 0), CHECK (c1 > c3));
정의에 포함되어 있는 테이블 제약 조건과 열의 제약 조건에서 지명하고 이름 형식:
-
첫 번째 제약 테이블이 제한조건:그것을 밖에서 발생하는 모든 열 정의 그래서 그것을 할 수 있습니다(그리고는 않습니다)여러 테이블의 열이 있습니다. 이 제약 조건에는 아직 정의되지 않은 열에 대한 순방향 참조가 포함되어 있습니다. 제약 조건 이름을 지정하지 않으므로 이름을 생성합니다. 각각의 열 정의 내에서 발생하고,따라서 정의되는 열만을 참조 할 수있다:다음 세 가지 제약 조건은 열 제약 조건이다. 제약 조건 중 하나는 명시적으로 명명됩니다. 다른 두 개 각각에 대한 이름을 생성합니다. 마지막 두 제약 조건은 테이블 제약 조건입니다. 그 중 하나는 명시 적으로 명명됩니다. 다른 하나의 이름을 생성합니다.이 예제에서는 제약 조건(예:제약 조건)을 사용하여 제약 조건(예:제약 조건)에 대한 이름을 생성 할 수 있습니다. 모든 유형의 제약 조건(기본 키,고유 인덱스,외래 키,검사)이 동일한 네임스페이스에 속하도록 지정합니다. 각 제약 조건 유형에는 스키마(데이터베이스)당 고유 한 네임 스페이스가 있습니다. 따라서 제약 조건 이름은 스키마당 고유해야 합니다; 동일한 스키마의 두 테이블은 제약 조건 이름을 공유 할 수 없습니다. (예외:
TEMPORARY
TEMPORARY
CHECK
제 이름을 뿐입니다. 테이블 이름을 사용하여 생성된 제약 조건 이름을 시작하면 테이블 이름도 스키마 내에서 고유해야 하기 때문에 스키마 고유성을 보장할 수 있습니다. 조건 식은 다음 규칙을 준수해야 합니다. 식에 허용되지 않는 구문이 포함되어 있으면 오류가 발생합니다.다른 테이블의 속성 및 열이 있는 열을 제외하고 생성되지 않은 열과 생성되지 않은 열은 허용됩니다. 리터럴,결정 론적 내장 함수 및 연산자가 허용됩니다. 테이블에 동일한 데이터가 주어지면 여러 호출이 연결된 사용자와 독립적으로 동일한 결과를 생성하면 함수가 결정적입니다. 비결정적이며 이 정의에 실패하는 함수의 예:. 저장 함수 및 사용자 정의 함수는 허용되지 않습니다. 저장 프로시저 및 함수 매개 변수는 허용되지 않습니다. 변수(시스템 변수,사용자 정의 변수 및 저장된 프로그램 로컬 변수)는 허용되지 않습니다. 하위 쿼리는 허용되지 않습니다.
외국인 핵심 참조 작업(ON UPDATE
ON DELETE
CHECK
제약 조건이 있습니다. Likewise, CHECK
constraints are prohibited on columns used in foreign key referential actions.
CHECK
constraints are evaluated for INSERT
UPDATE
REPLACE
LOAD DATA
, and LOAD XML
statements and an error occurs if a constraint evaluates to FALSE
. 오류가 발생하면 이미 적용된 변경 내용 처리는 트랜잭션 및 비트랜잭션 저장소 엔진에 따라 다르며 엄격한 데이터베이스 모드의 적용 여부에 따라 달라집니다. 제약조건은 제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약조건,제약 조건은 다음과 같이 계산됩니다. 잘못된 행에 대한 삽입 또는 업데이트는 건너뜁니다.