2012-07-27 87 views
1

我正在使用MySql 5.5數據庫,我有test1,test2,test3和test4數據庫。 test1數據庫有3個表(Student,Employee,Trainer)。 test2數據庫有3個表格(表格1,表格2,表格3) 。 現在我的問題是如何在MySql中爲特定數據庫創建觸發器?

如何將TRIGGER應用於test1數據庫?所以聽到TRIGGER適用於學生,員工,培訓師表。

請給我解決方案。

回答

1

CREATE TRIGGER的一般語法是: CREATE TRIGGER TRIGGER_NAME trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_statement

在下面的例子中,我們在表emp插入任何記錄之前更新Employee表的Salary列。例如:

mysql> SELECT * FROM Employee;

+ ----- + --------- + ---------- + ------------------ - + -------- + ------- +

| Eid | Ename |城市|指定|薪水| Perks |

+ ----- + --------- + ---------- + ----------------- - + -------- + ------- +

| 1 |拉胡爾|德里|經理| 10300 | 853 |

| 2 | Gaurav |孟買|助理經理| 10300 | 853 |

| 3 | Chandan | Banglore |團隊領導| 15450 | 999 |

| 5 | Tapan |浦那|開發人員| 20600 | 1111 |

| 6 | Amar |欽奈|開發人員| 16000 | 1124 |

| 7 | Santosh |德里| Designer | 10000 | 865 |

| 8 |蘇曼|浦那|網頁設計師| 20000 | 658 |

+ ----- + --------- + ---------- + ------------------ - + -------- + ------- +

7組行(0.00秒)

的MySQL>定界符//

的MySQL> CREATE TRIGGER ins_trig BEFORE INSERT ON Emp

-> FOR EACH ROW 

-> BEGIN 

-> UPDATE Employee SET Salary=Salary-300 WHERE Perks>500; 

-> END; 

-> // 

Query OK,0 rows affected(0。01秒)

mysql> delimiter; INSERT INTO Emp VALUES(9,'Rajesh','Delhi','Developer',15000,658);

Query OK,1 row affected(0.05 sec)

mysql> SELECT * FROM Employee;

+ ----- + --------- + ---------- + ------------------ - + -------- + ------- +

| Eid | Ename |城市|指定|薪水| Perks |

+ ----- + --------- + ---------- + ----------------- - + -------- + ------- +

| 1 |拉胡爾|德里|經理| 10000 | 853 |

| 2 | Gaurav |孟買|助理經理| 10000 | 853 |

| 3 | Chandan | Banglore |團隊領導| 15150 | 999 |

| 5 | Tapan |浦那|開發人員| 20300 | 1111 |

| 6 | Amar |欽奈|開發人員| 15700 | 1124 |

| 7 | Santosh |德里| Designer | 9700 | 865 |

| 8 |蘇曼|浦那|網頁設計師| 19700 | 658 |

+ ----- + --------- + ---------- + ------------------ - + -------- + ------- +

7排在組(0.00秒)

+0

它有可能適用? CREATE TRIGGER test.ins_trig BEFORE INSERT ON test.table1,test.table2 - > FOR EACH ROW - > BEGIN - >更新員工SET工資=工資-300 WHERE心動> 500; - > END; - > // – Chinna 2012-07-27 12:53:09

+0

當然不是。它會工作 – 2012-07-27 12:58:31

0

您可以在特定數據庫的特定表上創建觸發器。

請參閱triggers以瞭解如何完成此操作。

+0

我必須申請觸發在數據庫中的每個表中的知識..但我想爲每個數據庫創建一個觸發器,而不是每個表......所以它可能與否? – Chinna 2012-07-27 12:47:34

+0

@ user1557627 - 這沒有任何意義。當一個操作(插入,刪除,更新)發生在一個特定的表上時,觸發器就會發生。 – 2012-07-27 12:56:10