在删除集上...不为空?

时间:2014-04-19 09:19:35

标签: mysql

我有一个用户表,其中包含一个引用其在游戏中的位置的列。

我有一张地点表。

我有一把外键将两者绑在一起。

我想这样做,以便在删除位置时,将用户发送到最近的位置 - 我可以通过简单的查找轻松确定将用户发送到哪个位置,但我需要知道的是我可以把这个触发器?

如果我将外键设置为" ON DELETE SET NULL",我是否可以使用触发器检测设置为NULL的位置并使用old.location确定将它们发送到何处?那是一件事吗?

1 个答案:

答案 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,其中包含一些示例数据。