sql server和my sql创建触发器的语句是否一样

发布网友 发布时间: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

区别不大,函数的本身有返回值,
但是存储过程无返回值,其可以通过设置输出参数方式输出。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com