问题标签 [mysql-error-1442]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
832 浏览

mysql - MySQL 触发器:错误 #1442

我正在研究 MySQL 数据库并面临创建触发器的问题。在数据库中,假设有两个表,“user”和“book”,一对多的关系,user_id 是“book”表中的外键。我创建了一个触发器,当一本书被删除时,它会将“user”表中的“book_count”列减少 1。

现在我想在删除用户时删除用户的所有书籍。我试过这个:

这将返回以下错误:

我可以理解该错误是针对第一个触发器,它尝试更新用户表中即将删除的行。那么,如果我想通过触发器来做到这一点,有什么解决方法吗?

0 投票
1 回答
131 浏览

mysql - 尝试触发更新时出现错误 1442

我试图chatroompost.view在更新发生时触发从 1 到 0 的更新,并且chatroompost.likecount <= -5

查询:

但我得到了

错误代码:1442。无法更新存储函数/触发器中的表“chatroompost”,因为它已被调用此存储函数/触发器的语句使用。

我已经尝试了REPLACE所有AFTER方法,BEFORE但仍然遇到同样的错误。

0 投票
4 回答
1137 浏览

mysql - 错误代码:1442。无法更新存储函数/触发器中的表“学生”

我有以下触发器:

错误:

错误代码:1442。无法更新存储函数/触发器中的表“学生”,因为它已被调用此存储函数/触发器的语句使用。

0 投票
1 回答
302 浏览

mysql - SQL 错误 (1442) ,有什么解决办法吗?

我在 MySQL 中创建了这个触发器(在表产品更新之后):

但是,当我更新价格时,我收到了这个错误

: SQL 错误 (1442) 无法更新存储函数/触发器中的表“产品”,因为它已被调用此存储函数/触发器的语句使用。*/

我创建了两个表和两个触发器,例如:

Trigger 1(表产品更新后):

Trigger 2(在表上插入后product_price):

但是,我又得到了那个错误。

当孩子价格发生变化时,我真的需要更新父母价格,你有什么解决办法吗?

谢谢。

0 投票
1 回答
105 浏览

mysql - MySQL trigger throws error 1064

First of all, I know there are many questions of the same type out there, but they didn't solve my issue!

I want to delete the oldest row if there are more than 10 rows for a given set of 2 columns. My trigger looks like this:

I have the trigger in a file and the error is thrown when I execute it. The full error is

Line 25 is the last line that has DELIMITER;

My table looks like this:

The trigger gets added even after throwing the error. But when I add an 11th entry (for a given combination of columnA and columnB) into the table I get the following error:

The select and delete statements in the trigger are fine when executed individually, with appropriate values of course.

MySQL version 5.5.46

I'd be very thankful for any corrections / suggestions.

0 投票
1 回答
5213 浏览

mysql - MySQL更新后,更新同一张表的日期时间列

我有一个名为 的表teamMembers,该表存储一个人的姓名和电子邮件地址:

我已经创建了我的触发器phpMyAdmin,它在这个导出中看起来像这样:

所以当我使用这样的查询时: UPDATE teamMembers SET name = 'test' WHERE id = 1 我应该将更新的列设置为当前日期时间。

但这不起作用,我收到以下错误消息:

#1442 - 无法更新存储函数/触发器中的表 'teamMembers',因为它已被调用此存储函数/触发器的语句使用。

我真的不知道这里有什么问题。我认为这是因为这个触发器也会调用它自己,因此会变成一个无限循环。我认为必须有一种方法可以自动更新刚刚更新的记录而不改变我的查询。

有人可以帮我使用 MySQL 触发器更新到updated列吗?

0 投票
1 回答
9695 浏览

mysql - #1442 - 无法更新存储函数/触发器中的表“*”,因为它已被调用此存储函数/触发器的语句使用

我真的不擅长 SQL,但我试图让我的数据库尽可能简单和简约。不重复值,而是使用引用和 id。

现在插入查询后出现错误

1442 - 无法更新存储函数/触发器中的“已签名”表,因为它已被调用此存储函数/触发器的语句使用

禁用触发器时可以插入查询。但是我的查询只是从表'users'中读取,所以不应该有冲突。我读了一些关于死锁的东西——查询在使用它或类似的东西时正在锁定表,因此触发器不能更新一行?想法我怎么能做到这一点?

我简化了我的查询,所以只有重要的东西在那里。

询问:

扳机:

0 投票
1 回答
274 浏览

mysql - 带有两个触发器和一个存储过程的 MySQL 错误 1442

我已经阅读了很多关于此错误的文章,但似乎没有找到解决我的问题的方法。

据我了解,我的代码中没有无限循环或递归触发器调用。但我仍然不断收到此错误(1442)。我已经阅读了很多关于触发器如何起作用以及偶然制作递归触发器系统是多么容易,但我不明白错误在哪里。此外,人们错误地在启动触发器的同一行上使用了 INSERT/UPDATE,在我的情况下并非如此。

我怎么解决这个问题?如果您有任何具体问题,请务必问我。我真的很挣扎,需要帮助 - 期待回复

这是我的触发器和过程:(只是提到我不使用任何 DELIMITER,因为我使用的是 MySQL Workbench,并且没有必要在那里使用 DELIMITER)

1)触发:

2)触发:

3) 程序 alpha_numeric():

我的逻辑的实际顺序如下:

INSERT INTO dim_content -> 在 dim_content 上触发 BEFORE INSERT -> INSERT INTO 序列 -> 在序列上触发 BEFORE INSERT -> CALL alpha_numeric() -> 在序列上触发 BEFORE INSERT(继续)-> 更新 dim_content

0 投票
1 回答
6339 浏览

mysql - MySql - 可以在插入触发器后删除调用它的行

让我用最简单的话说 -是否可以删除实际设置在触发器上的行,即我有一个AFTER INSERT ON <table2>触发器,触发器中的 SQL INSERT/UPDATE另一个<table1>(基于 a WHERE),最后倾向于删除条目/中的行(基本上触发触发器的行)。

触发 SQL:

如果没有DELETE(就在 上方END;),触发器可以正常工作 -UPDATE如果否则存在INSERT- withDELETE语句会出现以下错误:


顺便说一句,错误是不言自明的,但仍然想确定这是否可能 - 如果不是这种方式,可能是其他方式,即我希望adddata_tmp表格全部为空(或清理)时间(INSERT将数据复制到主adddata表)

我想到的一个想法是,使用 anEVENT来清理adddata_tmp基于某个字段的status字段 - 它被设置为触发器中的最后一个语句(代替DELETE)。

0 投票
1 回答
148 浏览

mysql - 在另一个表中更新后从一个表中删除导致mysql中的错误

我在 MySQL 数据库中有两个表:“users”表中的“users”和“subscription”,每个用户都有一个 subscriptionID,它是“subscriptions”中一行的 ID 或 NULL。我需要在“用户”上创建一个更新触发器,以删除“订阅”中将订阅 ID 的新值设置为空的行。

这是我的触发器:

创建触发器没有问题,但是我有一个执行此查询的递归事件:

并导致错误:#1442 - 无法更新存储函数/触发器中的表“订阅”,因为它已被调用此存储函数/触发器的语句使用。

(我知道该查询对(select * from (select ..) as c).

我不明白问题是什么,因为触发器是从“用户”表中调用的,而删除是在“订阅”中进行的??

更新:我很确定问题是由事件的查询而不是触发器本身引起的,因为我用那个简单的查询进行了测试,'UPDATE users SET SubscriptionID = null WHERE UserID = 24并且触发器正确执行而没有错误......

非常感谢 !