MySQL에서 검사 제약 조건을 사용하는 방법

(*-*)浩
풀어 주다: 2020-09-15 17:05:19
원래의
20778명이 탐색했습니다.

MySQL에서 검사 제약 조건을 사용하는 방법: 1. CHECK 제약 조건을 설정하려는 필드 범위가 작고 모든 값을 열거하는 것이 더 쉬운 경우 필드 유형을 열거 유형 또는 집합 유형으로 설정할 수 있습니다. . 2. CHECK 제약 조건을 설정해야 하는 필드 범위가 크고 모든 값을 열거하기 어려운 경우 제약 조건 대신 트리거를 사용하여 데이터 유효성을 확보합니다.

MySQL에서 검사 제약 조건을 사용하는 방법

어떤 경우에는 지정된 범위 내에서 필드를 입력해야 합니다.

예: 성별은 '남성' 또는 '여성'으로만 입력할 수 있고, 잔액은 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(&#39;5&#39;,&#39;Joe&#39;,&#39;m&#39;,0,&#39;12345243912&#39;,&#39;CS&#39;);
ERROR 1265 (01000): Data truncated for column &#39;Sex&#39; at row 1
mysql> insert into Student(Sno,Sname,Sex,Age,Phonenumber,Sdept) values(&#39;5&#39;,&#39;Joe&#39;,&#39;男&#39;,0,&#39;12345243912&#39;,&#39;CS&#39;);
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!