选择退出列表的触发器

时间:2014-04-24 13:11:00

标签: mysql

以前从未使用过触发器。只是想确保我做的是正确的事情,而不是弄乱我的数据库。我想使用触发器来保留退出列表。因此触发器将是我在“选择退出”表中插入新号码时,它会从我的数据库中删除该号码。这看起来怎么样?

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表上,或者它是否也会影响我所针对的表?

1 个答案:

答案 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 ;

当然,当您更新表时,这将降低该表的读取性能,具体取决于您的锁定策略。