我在 mysql 中使用触发器时遇到严重问题。 基本上我试图在插入后更新一行。我正在使用该行中的现有值并尝试更新同一行的其他列。
例如:
Existing_Name Actual_Name
Product_Arc1 Arc1
Product_Arc2 Arc2
Product_Arc3
我正在获取Existing_Name
的值并提取它的第二部分,并使用触发器更新Actual_Name
。但是既然 MySQL 不支持更新激活触发器的同一个表呢?有什么可能的方法来做我想做的事吗?
到目前为止,我正在使用 PHP 脚本来执行相同的效果。但这要求最终用户在数据库发生变化时不断从网络浏览器触发此脚本。
任何想法表示赞赏。
谢谢。
最佳答案
它是否必须是“插入后一个”触发器?如果您需要 auto_increment 值来计算要修改的字段的值,就会出现这种情况。否则,应该使用“插入之前”触发器。您可以通过 SET NEW.fieldname = newvalue
例如我们拿 table 吧
CREATE TABLE foo (id int auto_increment, x int, y int, primary key(id))
和create a before insert trigger
delimiter |
CREATE TRIGGER footrigger BEFORE INSERT ON foo
FOR EACH ROW BEGIN
IF NEW.y > NEW.x THEN
SET NEW.y = -1;
END IF;
END;
|
现在让我们插入两条记录,一条记录 y=x,另一条记录 y>x
INSERT INTO foo (x,y) VALUES (1,1), (1,2)
A SELECT x,y FROM foo
然后返回
"x";"y"
"1";"1"
"1";"-1"
关于php - 如何根据 mysql 中以前的条目更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551567/