ON DELETE SET DEFAULT的解决方法?更好的练习?

时间:2017-03-07 18:44:39

标签: mysql sql

我在CONSTRAINT列上有一个PhotoID作为另一个表中FK的参考。 此表中的PhotoID列也具有约束NOT NULL,因为它不应为空。

我的数据库不支持ON DELETE SET DEFAULT。如果我没有设置ON DELETE,则无法删除其他表中的条目,但它应该是。但我也无法设置ON DELETE SET NULL,因为该列应该是NOT NULL

有解决方法吗?如果没有,这里有什么更好的做法,放弃NOT NULL约束或REFERENCE约束?

1 个答案:

答案 0 :(得分:3)

假设您在引用yourtable(PhotoID)的{​​{1}}上有外键,您可以使用reftable(PhotoID) - 触发器来模拟on delete

on delete set default

默认条目create trigger trbd_rt_on_delete_set_default_1 before delete on reftable for each row update yourtable set PhotoID = 1 where PhotoID = old.PhotoID; 显然必须存在于您的参考表中。

另一方面,您可能只允许PhotoID=1并将其视为默认值。