Trên thực tế, bạn có thể không định nghĩa cấu trúc điều kiện trong cú pháp DDL. Trường của bạn có thể là NULL
hoặc NOT NULL
- không có tùy chọn thứ ba (và nó không thể phụ thuộc vào trường khác trong cấu trúc )
Nhưng bạn vẫn có thể mô phỏng hành vi mong muốn thông qua trình kích hoạt. Bạn có thể làm gián đoạn UPDATE
/ INSERT
nếu dữ liệu đến không hợp lệ về mặt logic của bạn. Điều đó có thể được thực hiện thông qua:
CREATE TRIGGER `bannedOnCheck`
BEFORE INSERT ON `fa_ranking_system`.`Player`
FOR EACH ROW
BEGIN
IF(new.IsBanned && new.BannedOn IS NULL) THEN
SIGNAL 'Integrity check failed: can not set banned without ban date'
END IF
END