【发布时间】:2021-04-13 04:37:05
【问题描述】:
当更新值为“jakarta”时,我想将当前数据移动到另一个表
IF NEW.alamat = "jakarta" THEN
INSERT INTO detail_mhs_copy1
SELECT * FROM detail_mhs WHERE id_mhs = NEW.id_mhs;
DELETE FROM detail_mhs WHERE id_mhs = OLD.id_mhs;
END IF;
但是有了这个触发器,它的 make 错误就像这样
1442 - 无法更新存储函数/触发器中的表“detail_mhs”,因为它已被调用此存储函数/触发器的语句使用
有什么解决办法吗?
【问题讨论】:
-
触发器格式无法解决。您可以将行复制到“另一个表”并将当前记录标记为必须删除的记录(通过在某些列中设置一些特殊值)。删除本身必须由事件过程执行。
-
另外,您可以禁止直接数据访问并仅使用存储过程。这允许在 SP 中实现任何复杂的逻辑。
-
另一个问题是我无权更改操作更新
-
如果是这样,那么触发器+事件似乎是唯一的选择。
-
您到底需要做什么?也许有两件事:(1)将旧行复制到另一个表和(2)允许更新当前表。或者您是否希望不更改当前行?或者也许删除当前行?