gpt4 book ai didi

mysql - 触发逻辑导致错误

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:48 24 4
gpt4 key购买 nike

我正在制作 MySql 数据库,其中我有 film 表:

  • 编号
  • 标题
  • 数量
  • 可用
  • 描述

并使用外键film_id复制表:

  • 编号
  • 电影编号

现在我在删除触发器复制后写了:

UPDATE `film`
SET available = available - 1
WHERE OLD.film_id = id;

现在我想在删除触发器之前写在胶片上,由于电影受到复制的限制,所以我写:

DELETE FROM copy WHERE copy.film_id = OLD.id;

这里出现错误:

Can't update table 'film' in stored function/trigger because it already used by statement which invoked this stored function/trigger.

我想删除电影 -> 删除副本 -> 更新电影(错误)

最佳答案

看起来您根本不需要trigger。相反,您可以配置 FOREIGN KEY,如果 film 中的父记录被删除,则 copy 表中的条目将被删除。查看 MySQL 的文档 here .您需要使用 CASCADE 选项:

CASCADE: Delete or update the row from the parent table, and automatically delete or update the matching rows in the child table. Both ON DELETE CASCADE and ON UPDATE CASCADE are supported.

这是 FOREIGN KEY 语法的样子:

CONSTRAINT fk_film_id FOREIGN KEY (film_id) REFERENCES film(id) ON DELETE CASCADE;

关于mysql - 触发逻辑导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com