我有一个名为customer
的表,其中包含一个名为name
的列和一个名为first_name_start
的列。我希望first_name_start
等于SUBSTRING(name, 1, 4)
。我如何创建一个确保发生这种情况的触发器?
答案 0 :(得分:3)
DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN
SET NEW.first_name_start = SUBSTRING(NEW.name, 1, 4);
END$$
CREATE TRIGGER trigger_name BEFORE UPDATE ON your_table
FOR EACH ROW
BEGIN
SET NEW.first_name_start = SUBSTRING(NEW.name, 1, 4);
END$$
DELIMITER ;
不幸的是,我没有时间对此进行测试,这可能是完全错误的。
答案 1 :(得分:0)
为什么不创建一个添加first_name_start
的视图,如果你真的需要它作为列?然后你不会存储冗余数据,但你可以像使用它一样使用它。