안녕하십니까, MySQL
TRIGGERS
을 사용하고 있습니다. 을 사용하고 있습니다. MySQL 5.5.8, 테이블이 있습니다. MySQL
이 허용되지 않습니다 CHECK
제약 조건, 입력 값을 잘못 입력하면 입력 값을 확인하려면 TRIGGER
을 사용했습니다. 나는 메시지를주고 테이블에 레코드 삽입을 시도했습니다. 하지만 내 TRIGGER
을 무시하고, 잘못된 데이터가 포함되어 있으면 테이블에 레코드를 삽입하십시오.작동하지 않는 테이블에 삽입을 중지하려면 트리거를 사용하십시오.
테이블
CREATE TABLE pupil_data
(
PupilID int(10) NOT NULL AUTO_INCREMENT,
PupilForeName varchar(255) NOT NULL,
PupilLastName varchar(255) NOT NULL,
Gender CHAR(1),
DateOfBirth DATE ,
PhoneNumber int(10) ,
FamilyID int(10) NOT NULL,
PRIMARY KEY (PupilID),
FOREIGN KEY (FamilyID) REFERENCES family_data(FamilyID)
ON DELETE CASCADE
ON UPDATE CASCADE
,
UNIQUE (PhoneNumber)
) ENGINE=innodb;
트리거 내가 생년월일 (DateOfBirth)에 입력 한 값이 4 개보다 문자가 있는지 확인하려면
DELIMITER $$
CREATE TRIGGER `check_pupil_before_insert` BEFORE INSERT ON `pupil_data`
FOR EACH ROW BEGIN
IF CHAR_LENGTH(NEW.DateOfBirth) < 4 THEN
SIGNAL SQLSTATE '12345'
SET MESSAGE_TEXT := 'check constraint on pupil_data.DateOfBirth failed'
END IF;
END$$
DELIMITER ;
, 다음 레코드를 삽입하지 마십시오을 제공 오류 메시지가 표시됩니다.
DateOfBirth
의 값은 0
, 그래서 나는 그것이 오류를 제공,하지만 당신은 그것을 무시하고 실행 볼 수 있어야 가정합니다.
이유가 무엇입니까, 내가 잘못하고 있습니다. 제발 도와주세요. 미리 감사드립니다.
UPDATE
insert 문은 경고를 표시합니다.'show warnings'을 시도 했습니까? –
'trigger'를 생성하는 중 에러가 발생하면'세미 콜론 '을 빠뜨린 것 같습니다. 확인하십시오. – Ranjith
@ranjith, 그 방법을 보여주세요. –