집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 검사 제약 조건을 사용하는 방법
MySQL에서 검사 제약 조건을 사용하는 방법: 1. CHECK 제약 조건을 설정하려는 필드 범위가 작고 모든 값을 열거하는 것이 더 쉬운 경우 필드 유형을 열거 유형 또는 집합 유형으로 설정할 수 있습니다. . 2. CHECK 제약 조건을 설정해야 하는 필드 범위가 크고 모든 값을 열거하기 어려운 경우 제약 조건 대신 트리거를 사용하여 데이터 유효성을 확보합니다.
어떤 경우에는 지정된 범위 내에서 필드를 입력해야 합니다.
예: 성별은 '남성' 또는 '여성'으로만 입력할 수 있고, 잔액은 0보다 커야 하며 기타 조건만 가능합니다. ,
예를 들어 다음을 요청할 수 있습니다. 작성자 테이블의 우편번호 열에는 6자리 우편번호만 입력할 수 있습니다.
프로그래밍 방식 제어 외에도 CHECK 제약 조건을 사용하여 데이터를 표준화할 수도 있습니다.
그러나:
모든 mysql 스토리지 엔진은 검사 제약 조건을 지원하지 않습니다. MySQL은 검사 절을 분석하지만 데이터 삽입 시 이를 무시하므로 검사가 작동하지 않습니다.
이 문제를 해결하는 두 가지 방법:
1. CHECK 제약 조건을 설정하려는 필드 범위가 작고 모든 값을 열거하는 것이 더 쉬운 경우 필드 유형을 열거 유형 enum() 또는 컬렉션 유형 set().
예를 들어 성별 필드는 이렇게 설정할 수 있으며, 열거값 이외의 값을 삽입하는 것은 허용되지 않습니다.
CREATE TABLE `Student` ( `Sno` char(8) NOT NULL, `Sname` varchar(10) NOT NULL, `Sex` enum('男','女') NOT NULL DEFAULT '男', `Age` tinyint(4) NOT NULL DEFAULT '20', `Phonenumber` char(12) DEFAULT NULL, `Sdept` varchar(20) NOT NULL, PRIMARY KEY (`Sno`), UNIQUE KEY `Phonenumber` (`Phonenumber`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. CHECK 제약 조건을 설정해야 하는 필드 범위가 크고 정수 또는 특정 범위 등 모든 값을 열거하기 어려운 경우 제약 조건 대신 트리거만 사용하여 데이터 유효성을 얻을 수 있습니다. .
DELIMITER $ create trigger studentcheck before insert on Student for each row begin if new.Age<15 or new.Age>30 then set new.Age=20;end if; end $ DELIMITER ;
테스트:
mysql> insert into Student(Sno,Sname,Sex,Age,Phonenumber,Sdept) values('5','Joe','m',0,'12345243912','CS'); ERROR 1265 (01000): Data truncated for column 'Sex' at row 1 mysql> insert into Student(Sno,Sname,Sex,Age,Phonenumber,Sdept) values('5','Joe','男',0,'12345243912','CS'); Query OK, 1 row affected (0.00 sec) mysql> select * from Student; +-----+-------+-----+-----+-------------+-------+ | Sno | Sname | Sex | Age | Phonenumber | Sdept | +-----+-------+-----+-----+-------------+-------+ | 4 | nancy | m | 0 | 12345243965 | CS | | 5 | Joe | 男 | 20 | 12345243912 | CS | +-----+-------+-----+-----+-------------+-------+ 2 rows in set (0.00 sec)
이제 성별을 "남성"과 "여성" 중에서 선택해야 함을 알 수 있습니다. 그렇지 않으면 연령이 사양을 충족하지 않으면 자동으로 기본값으로 설정됩니다. 트리거의 존재 20.
이렇게 하면 잘못된 검사 제약 조건 문제를 해결할 수 있습니다.
위 내용은 MySQL에서 검사 제약 조건을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!