以前从未使用过触发器。只是想确保我做的是正确的事情,而不是弄乱我的数据库。我想使用触发器来保留退出列表。因此触发器将是我在“选择退出”表中插入新号码时,它会从我的数据库中删除该号码。这看起来怎么样?
CREATE
TRIGGER `trigger_opt_out` AFTER INSERT
ON DB.opt_out
FOR EACH ROW BEGIN
UPDATE TABLE DB.table t
JOIN opt_out o
ON t.fax=o.fax
SET t.fax = NULL
END;
我不想删除整个记录中的传真号码和/或电话号码。
是否可以使触发器从多个表中删除数字?或者我只需要创建另一个触发器?
我已经了解了触发成本的开销。触发器是否仅导致其所在表中的效率损失,在我的示例中,开销仅在我的opt_out表上,或者它是否也会影响我所针对的表?
答案 0 :(得分:0)
无需加入。使用
delimiter |
CREATE TRIGGER `trigger_opt_out` AFTER INSERT ON DB.opt_out
FOR EACH ROW BEGIN
UPDATE DB.table
SET fax = NULL
WHERE fax = NEW.fax;
END
|
delimiter ;
当然,当您更新表时,这将降低该表的读取性能,具体取决于您的锁定策略。