我有一个用户表,其中包含一个引用其在游戏中的位置的列。
我有一张地点表。
我有一把外键将两者绑在一起。
我想这样做,以便在删除位置时,将用户发送到最近的位置 - 我可以通过简单的查找轻松确定将用户发送到哪个位置,但我需要知道的是我可以把这个触发器?
如果我将外键设置为" ON DELETE SET NULL",我是否可以使用触发器检测设置为NULL的位置并使用old.location
确定将它们发送到何处?那是一件事吗?
答案 0 :(得分:1)
您的BEFORE DELETE
表格需要locations
触发器,如下所示:
create trigger move_users
before delete
on locations
for each row
update users
set locationid = (select nearest from nearest where locationid = old.locationid)
where locationid = old.locationid
这里有一个sqlfiddle,其中包含一些示例数据。