在mysql中如何查看和修改触发器的代码?请问各位大师,小弟先谢谢了!!!!!!!!! 5
在Mysql中,如若需要查看数据库中已有的触发器,可以使用 SHOW TRIGGERS 语句。
SHOW TRIGGERS;
修改触发器的代码需要先删除然后重新创建一个新的
删除触发器
和删除数据库、删除表格一样,删除触发器的语法如下:
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
创建触发器
在MySQL中,创建触发器语法如下:
代码如下:
CREATE TRIGGER trigger_name
trigger_time
trigger_event ON tbl_name
FOR EACH ROW
trigger_stmt
其中:
trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;
trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。
由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。
另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。
2013-07-11
查看和修改触发器的代码
SHOW CREATE TRIGGER 触发器名称 \G
下面是一个例子:
--测试表
CREATE TABLE test_trigger_table (
id INT,
name VARCHAR(10),
val INT
);
DELIMITER //
CREATE TRIGGER BeforeInsertTest
BEFORE INSERT ON test_trigger_table
FOR EACH ROW
BEGIN
SET new.val = '100';
END;
//
DELIMITER ;
mysql> SHOW CREATE TRIGGER BeforeInsertTest\G
*************************** 1. row ***************************
Trigger: BeforeInsertTest
sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTI
TUTION
SQL Original Statement: CREATE DEFINER=`root`@`localhost` TRIGGER BeforeInsertTe
st
BEFORE INSERT ON test_trigger_table
FOR EACH ROW
BEGIN
SET new.val = '100';
END
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)
mysql>
至于修改。 你可以先 DROP 掉, 然后再重新创建。
广告 您可能关注的内容 |