Tôi đã thay đổi not null thành null cho trường about us
CREATE TABLE IF NOT EXISTS `te` (
`id` int(30) NOT NULL,
`name` text NOT NULL,
`address` text NOT NULL,
`Aboutus` text NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Đây là trình kích hoạt của bạn BEFORE INSERT
CREATE TRIGGER new_insert
BEFORE INSERT ON `te`
FOR EACH ROW
SET NEW.`Aboutus` = CASE WHEN NEW.Aboutus IS NULL THEN 'Not Updated' ELSE NEW.Aboutus END
;
Chèn mà không có Aboutus
INSERT INTO `te` (`id`, `name`, `address`)
VALUES (1, 'name', 'address') ;
Chèn bằng Aboutus
INSERT INTO `te` (`id`, `name`, `address`, `Aboutus`)
VALUES (2, 'name', 'address', 'Aboutus') ;
Chèn bằng cách chuyển Aboutus
null
INSERT INTO `te` (`id`, `name`, `address`, `Aboutus`)
VALUES (3, 'name', 'address', null) ;
Bản trình diễn
Chỉnh sửa Như @garethD
đã chỉ ra một trường hợp cho tình huống cập nhật, bạn cũng cần một trình kích hoạt khác trên BEFORE UPDATE
vì vậy nếu null xuất hiện trong bản cập nhật thì aboutus phải được cập nhật dưới dạng Not Updated
CREATE TRIGGER update_trigger
BEFORE UPDATE ON `te`
FOR EACH ROW
SET NEW.`Aboutus` = CASE WHEN NEW.Aboutus IS NULL THEN 'Not Updated' ELSE NEW.Aboutus END
;
UPDATE te
SET AboutUs = NULL;