您现在的位置是:首页 > 电脑 > 

sql 触发器(Insert,update,delete)

2025-07-19 03:41:48
说明 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。 所以触发器可以用来实现对表实施复杂的完整性约束。 分类使用 “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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/diannao/549534.html

相关标签:无
上传时间: 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”触发器只能用于表