如何根据mysql中的先前条目更新表

时间:2010-03-31 08:56:48

标签: php mysql triggers

我在使用mysql中的触发器时遇到了严重问题。 基本上我正在尝试更新行on after insert。我正在使用行中的现有值并尝试更新同一行的其他列。

例如:

Existing_Name Actual_Name
Product_Arc1  Arc1
Product_Arc2  Arc2
Product_Arc3

我正在使用Existing_Name的值并提取其第二部分并使用触发器更新Actual_Name。 BUT,因为MySQL不支持更新同一个表,触发器被激活了吗?有没有办法做我想做的事?

截至目前,我正在使用PHP脚本执行相同的效果。但这需要最终用户在数据库中发生一些更改时继续从Web浏览器触发此脚本。

任何想法都赞赏。

感谢。

2 个答案:

答案 0 :(得分:1)

是否必须是“一个 插入后”触发器?如果您需要auto_increment值来计算要修改的字段的值,则会出现这种情况。否则应该执行“before insert”触发器。您可以通过SET NEW.fieldname = newvalue

更改要插入的字段值

E.g。让我们拿桌子

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)

然后SELECT x,y FROM foo返回

"x";"y"
"1";"1"
"1";"-1"

答案 1 :(得分:0)

你不能直接改变插入机制吗? 插入表(Existing_Name,Actual_Name)值($ Existing_Name,replace($ Existing_Name,'Product _','')...