테이블에 명명된 검사 제약 조건 추가
이름을 추가하려고 합니다.CHECK
MariaDB의 테이블에 대한 제약 조건입니다.설명서와 주변에 흩어져 있는 몇 가지 샘플을 보면 다음 구문이 작동할 것입니다.
DROP TABLE IF EXISTS customers;
CREATE TABLE customers (
id int AUTO_INCREMENT PRIMARY KEY,
name varchar(255),
email VARCHAR(60) constraint customer_email check (email like '%@%')
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci ENGINE=INNODB;
그렇지 않습니다.항상 도움이 되는 메시지를 받습니다.
SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 4행의 'check('%@%'와 같은 전자 메일) CHARRATE SETutf8mb4 COLLATEutf8mb4_unicode_520_...' 근처에서 사용할 올바른 구문을 확인하십시오.
물론 아무 말도 안 해주는군요
을 알고 있습니다
- 제거하면
constraint customer_email
그건 효과가 있다. - 다음에 쉼표를 추가하면
email VARCHAR(60)
검사 제약 조건을 별도의 명령어로 만드는 것도 작동합니다.
즉, MariaDB는 위의 구문을 지원하지 않는 것입니까, 아니면 제가 놓친 것이 있습니까?
저는 https://dbfiddle.uk/PYJKnmuU 에 바이올린 연주자가 있습니다.
https://mariadb.com/kb/en/constraint/ #check-straints에 따르면 이름이 지정된 제약 조건은 제약 조건을 테이블 수준 제약 조건으로 정의한 경우에만 사용할 수 있는 것으로 나타납니다.
다시 말해, 이것은 다음과 같이 작동해야 합니다.
...
email VARCHAR(60), -- notice the comma
constraint customer_email check (email like '%@%')
...
그러나 명명된 검사 제약 조건을 각 열에 따라 정의하지 않습니다.
이 경우 쉼표가 중요한 비트입니다.SQL은 일반적으로 거의 모든 경우에 공백을 선택 사항으로 취급하기 때문에 쉼표 뒤에 새 줄을 추가하는 것은 선택 사항입니다.
구문에서는 열에 인라인 CHECK 제약 조건을 사용할 수 있지만 제약 조건의 이름을 지정해야 하는 경우에는 사용할 수 없습니다.
언급URL : https://stackoverflow.com/questions/76025599/adding-a-named-check-constraint-to-a-table
'programing' 카테고리의 다른 글
동시 가방 대 목록 (0) | 2023.06.17 |
---|---|
목록 모음에서 메서드 선택 (0) | 2023.06.17 |
개인 클래스 메소드를 만드는 방법은 무엇입니까? (0) | 2023.06.12 |
TypeError: 'NoneType' 개체는 Python에서 볼 수 있습니다. (0) | 2023.06.12 |
C에서 **를 사용할 때의 차이점 (0) | 2023.06.12 |