こんにちは、 MySQL 5.5.8MySQL
TRIGGERS
を使用しています。テーブルがあります。制約を許可しないため、入力値が間違っていることを確認するために使用しました。入力値が間違っている場合は、メッセージを出してテーブルへのレコードの挿入を停止しようとしました。ただし、無効なデータが含まれている場合、テーブルへのレコードの挿入は無視されます。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;
引き金
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 に入力された値が 4 文字未満かどうかを確認したいのですが、レコードを挿入せずにエラー メッセージを表示します。
の値はDateOfBirth
で0
あるため、エラーが発生するはずですが、ご覧のとおり、無視して実行しています。
理由は何ですか、私はこれを間違っています、助けてください、事前に感謝します.
アップデート