sql 触发器(Insert,update,delete)
说明
触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。 所以触发器可以用来实现对表实施复杂的完整性约束。
分类使用
“Instead of”触发器在执行真正“插入”之前被执行。除表之外,“Instead of”
说明
触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。 所以触发器可以用来实现对表实施复杂的完整性约束。
分类使用
“Instead of”触发器在执行真正“插入”之前被执行。除表之外,“Instead of” 触发器也可以用于视图,用来扩展视图可以支持的更新操作。
使用:ISTEAD OF ISERT
“After”触发器在Insert、Update或Deleted语句执行之后被触发。“After”触发器只能用于表。
使用:AFTER ISERT
示例(after)
insert触发器
drop trigger [dbo].[Trigger_Insert_Test]
--不能插入临时表
CREATE TABLE sal_order_test
(FID IT IDETITY (1,1),
FBILLO VARCHAR(20) OT ULL DEFAULT( ),
FDATE VARCHAR(20) OT ULL DEFAULT( )
)
CREATE TABLE sal_order_testLog
(FID IT IDETITY (1,1),
Direction VARCHAR(2000) OT ULL DEFAULT( ),
FDATE VARCHAR(200) OT ULL DEFAULT( )
)
drop TABLE sal_order_testLog
drop TABLE sal_order_test
select *from sal_order_testLog
select *from sal_order_test
--Insert 触发器
Create TRIGGER [dbo].[Trigger_Insert_Test]
O [dbo].[T_SAL_ORDER]
AFTER ISERT
AS
BEGI
SET OCOUT O;
Declare @fid int;
Select @fid=FID From inserted
Declare @fbillno varchar(2000);
Select @fbillno=FBILLO From inserted
if ( (select COUT(*) from sal_order_test where FBILLO = @fbillno)=0)
Begin
Insert into sal_order_test( FBILLO, FDATE)
Select FBILLO, FDATE From inserted
insert into sal_order_testLog(Direction,Fdate) values( @fbillno 执行成功 ,convert(varchar,getdate(),21))
End
ELSE
Begin
insert into sal_order_testLog(Direction,Fdate) values( @fbillno 执行失败 ,convert(varchar,getdate(),21))
--rollback transaction --数据回滚
ED
ED
update 触发器
--UPDATE 触发器
Create TRIGGER [dbo].[Trigger_UPDATE_Test]
O [dbo].[T_SAL_ORDER]
AFTER UPDATE
AS
BEGI
SET OCOUT O;
--写自己要执行的操作,这里只是记录一下日志
Insert Into sal_order_testLog( Direction, FDATE)
Select FBILLO 更新成功! , GETDATE() From deleted
ED
delete触发器
--Delete 触发器
Create TRIGGER [dbo].[Trigger_Delete_Test]
O [dbo].[T_SAL_ORDER]
AFTER DELETE
AS
BEGI
SET OCOUT O;
Insert Into sal_order_testLog( Direction, FDATE)
Select FBILLO 删除成功! , GETDATE() From deleted
ED
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2023-06-29 02:06:24
推荐阅读
留言与评论(共有 7 条评论) |
本站网友 世纪购官网 | 16分钟前 发表 |
分类使用 “Instead of”触发器在执行真正“插入”之前被执行 | |
本站网友 历下租房 | 19分钟前 发表 |
convert(varchar | |
本站网友 识时务者为俊杰 | 16分钟前 发表 |
1) | |
本站网友 市桥医院 | 16分钟前 发表 |
Fdate) values( @fbillno 执行失败 | |
本站网友 二元人民币 | 12分钟前 发表 |
21)) --rollback transaction --数据回滚 ED ED update 触发器 --UPDATE 触发器 Create TRIGGER [dbo].[Trigger_UPDATE_Test] O [dbo].[T_SAL_ORDER] AFTER UPDATE AS BEGI SET OCOUT O; --写自己要执行的操作,这里只是记录一下日志 Insert Into sal_order_testLog( Direction | |
本站网友 补肾食疗 | 28分钟前 发表 |
“After”触发器只能用于表 |