2012-07-27 123 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

相关问题