不知道楼主所说的区别是吗?在功能上是没有什么区别的,但可能在语法上是有一些差异的了:SQL SERVER CREATE TRIGGER
创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。语法
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
} ORACLE CREATE OR REPLACE TRIGGER customerid_update
BEFORE DELETE OR UPDATE
ON customer
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare
ls_pricetype char(10);Begin
ls_osuserid := sys_context('USERENV','OS_USER');
IF DELETING THEN
ELSE
IF UPDATING('CUSTOMERID') OR UPDATING('NAME') THEN
---
END IF;
END IF;
End;
创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。语法
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
} ORACLE CREATE OR REPLACE TRIGGER customerid_update
BEFORE DELETE OR UPDATE
ON customer
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare
ls_pricetype char(10);Begin
ls_osuserid := sys_context('USERENV','OS_USER');
IF DELETING THEN
ELSE
IF UPDATING('CUSTOMERID') OR UPDATING('NAME') THEN
---
END IF;
END IF;
End;
sql server:
只一种触发器形式,而在触发体来可以实现像oracle行级别触发器的效果
CREATE TRIGGER trigger_name
ON a
FOR before INSERT , UPDATE
as
select * from a,inserted where ....; --行级别
...
end;oracle:
CREATE TRIGGER trigger_name
before INSERT or UPDATE on a
as
begin
select ... from a where ...
end;
/这一点上务必要记紧
oracle 直接可以在每个需要读取的列名加入 :old,:new 就可以了.
还有就是oracle和sqlserver 触发器工作的模式有些不一样.特别是sqlserver大批量数据进行update触发的时候,你就知道了.