2010-03-31 69 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"