我在CONSTRAINT
列上有一个PhotoID
作为另一个表中FK的参考。
此表中的PhotoID
列也具有约束NOT NULL
,因为它不应为空。
我的数据库不支持ON DELETE SET DEFAULT
。如果我没有设置ON DELETE
,则无法删除其他表中的条目,但它应该是。但我也无法设置ON DELETE SET NULL
,因为该列应该是NOT NULL
。
有解决方法吗?如果没有,这里有什么更好的做法,放弃NOT NULL
约束或REFERENCE
约束?
答案 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
并将其视为默认值。