MySQL的trigger是仅仅statement激活,不能对同一table的同一个event写两个trigger, 同一个event是指create trigger 中的trigger_
MySQL的trigger是仅仅statement激活,,不能对同一table的同一个event写两个trigger, 同一个event是指create trigger 中的trigger_time+trigger_event. trigger不会因为某些表的改变而被激活,这些表的改变是通过API修改的,这些API不发送语句给mysql server.
1. mysql只能对每一行触发一次,而Oracle可以对每一行整个表触发一次。
2. mysql只能是表的行激活触发器,但oracle可以做到对列触发。
oracle里面触发器的定义语句:
CREATE
[OR REPLACE] trigger_name trigger_time trigger_event of column
ON tbl_name referencing old as old_value
new as new_value
FOR EACH ROW trigger_stmt
mysql中触发器的定义语句:
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
简介PHP轻论坛是一个简单易用的PHP论坛程序,适合小型社区和个人网站使用。v3.0版本是完全重构的版本,解决了之前版本中的所有已知问题,特别是MySQL保留字冲突问题。主要特点• 简单易用:简洁的界面,易于安装和使用• 响应式设计:适配各种设备,包括手机和平板• 安全可靠:避免使用MySQL保留字,防止SQL注入• 功能完善:支持分类、主题、回复、用户管理等基本功能• 易于扩展:模块化设计,便于
26
简单测试如下:
mysql> delimiter |
mysql> CREATE TRIGGER test_a BEFORE INSERT ON a
-> FOR EACH ROW BEGIN
-> INSERT INTO abc SET id = NEW.id;
->
-> END;
-> |
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql>
mysql>
mysql> delimiter |
mysql> CREATE TRIGGER test_b BEFORE INSERT ON a
-> FOR EACH ROW BEGIN
-> INSERT INTO abc SET name = NEW.name;
->
-> END;
-> |
ERROR 1235 (42000): This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
mysql> delimiter ;
mysql>
mysql>
mysql> delimiter |
mysql> CREATE TRIGGER test_b AFTER INSERT ON a
-> FOR EACH ROW BEGIN
-> INSERT INTO abc SET name = NEW.name;
->
-> END;
-> |
Query OK, 0 rows affected (0.00 sec)

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号