发布网友 发布时间:2022-04-27 02:22
共4个回答
热心网友 时间:2022-05-03 12:13
基本是一样的,都是t-sql 但是具体的一些函数 等就不一样了
热心网友 时间:2022-05-03 13:31
SQL Server
触发器只有 语句级别的
只有 AFTER
取得 操作数据,通过 inserted deleted
编写触发器的时候,要充分考虑 一次更新一条,与一次更新多条的问题。
避免简单的 SELECT @NewName = name FROM inserted; 代码操作。
对于 FOR INSERT,UPDATE,DELETE 的
通过 查询 inserted 与 deleted 的记录 来判断
通过COLUMNS_UPDATED 实现在触发以后,判断哪些列被更新了。
注意:
对于触发器,在测试期间,出于测试/调试的目的,加了PRINT语句。
在最终的实施环境,不要写任何的 PRINT 语句。
否则可能会出现不可预料的问题。
例子代码:
http://hi.baidu.com/wangqing999/blog/item/126bdc0c7a7dd79b0a7b829d.html
MySQL
触发器只有 FOR EACH ROW 级别的
有 BEFORE 有 AFTER
取得 操作数据 的是通过 old new
BEFORE 的时候, 可以通过 new.xxx 来修改数据。
不支持一个触发器 同时处理 INSERT UPDATE DELETE 触发器
对于具有相同触发程序动作时间和事件的给定表,不能有两个触发程序。例如,对于某一表,不能有两个BEFORE UPDATE触发程序。但可以有1个BEFORE UPDATE触发程序和1个BEFORE INSERT触发程序,或1个BEFORE UPDATE触发程序和1个AFTER UPDATE触发程序。
例子代码:
http://hi.baidu.com/wangqing999/blog/item/8278231f86c16b168718bf6b.html
热心网友 时间:2022-05-03 15:06
很不一样,sqlserver没有行级触发器,而mysql是行级触发器
还有,sqlserver没有before触发器,而mysql是支持before触发器的
我感觉mysql的触发器很多地方像oracle触发器
热心网友 时间:2022-05-03 16:57
区别不大,函数的本身有返回值,
但是存储过程无返回值,其可以通过设置输出参数方式输出。