2010-03-31 67 views
0

我在使用mysql中的触发器时遇到了严重的麻烦。 基本上我试图更新行on after insert。我正在使用行中的现有值并尝试更新同一行的另一列。如何根据mysql中的以前条目更新表格

例:

Existing_Name Actual_Name 
Product_Arc1 Arc1 
Product_Arc2 Arc2 
Product_Arc3 

我正在采取的Existing_Name价值和提取它的第二部分和更新Actual_Name使用触发器。因为MySQL不支持更新同一个表,触发器是否被激活?有没有什么可能的方式来做我想要的?

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

任何想法赞赏。

谢谢。

回答

0

难道你不能直接改变插入机制吗? 插入到表(EXISTING_NAME,Actual_Name)值($ EXISTING_NAME,更换($ EXISTING_NAME, '产品_', '')......

+0

我不”明白你的意思。你可以请详细说明我吗?你觉得我需要放置这些代码?插入后? – JPro 2010-03-31 09:17:09

+0

这不是触发器。原始插入查询可以像这样编辑,而不是创建触发器。 – 2010-03-31 09:39:39

+0

好的,你能告诉我正确的完整插入像上面那样吗? – JPro 2010-03-31 09:55:11

1

它有没有成为一个 “一插入” 触发?这会如果你需要一个auto_increment值来计算你想要修改的字段的值,否则“before insert”触发器应该这样做:你可以改变要插入的字段的值SET NEW.fieldname = newvalue

例如,表

CREATE TABLE foo (id int auto_increment, x int, y int, primary key(id)) 

and 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"