欢迎投稿

今日深度:

SQL Server触发器,sqlserver触发器

SQL Server触发器,sqlserver触发器


简单介绍:  

  触发器其实是一种特殊的存储过程,它只有在特定的事件发生时自动执行。存储过程和触发器都是SQL语句和流程控制语句的集合,存储过程通过存储过程的名字被直接调用,而触发器主要通过时间进行触发而被执行。

触发器的分类:

  触发器包括DML触发器和DDL触发器。DML触发器是我们常见的一种触发器,当数据库服务器中发生数据操作语言(DML)事件时会自动执行;DDL触发器是一种新型的触发器,它在响应数据定义语言(DDL)语句时触发,一般用于数据库中执行管理任务。今天我们主要研究DML触发器,它又分为AFTER触发器和INSTEAD OF触发器两类。

  AFTER触发器是记录已经改变完成之后才被激活的执行,也就是事件已经结束触发器才被触发;INSTEAD OF触发器是用来取代原本的操作,在事件发生之前触发,这样它并不执行原先的SQL语句,而是按照触发器中的定义操作。

触发条件:

  DML触发器响应UPDATE、INSERT、DELETE语句而激活;DDL触发器响应CREATE、ALTER、DROP、GRANT、DENY、REVOKE、UPDATE以及STATISTICS等语句而激活。

思维导图:

 

创建触发器:

 

 

简单应用:

  以牛腩新闻发布系统中删除新闻类别同时删除新闻以及评论为例,这里因为有外键约束,所以删除新闻类别的同时要删除该类别的新闻以及评论。由于 AFTER触发器是记录已经改变完成之后才被激活的执行,因此我们用INSTEAD OF触发器,把之前单纯的删除类别操作替换为删除评论、新闻以及类别的操作。这样就不会出现外键约束而导致无法删除的情况了。

 

<span style="font-family:KaiTi_GB2312;font-size:18px;">-- =============================================
-- Author:		<邵鸿鑫>
-- Create date: <2014-8-18>
-- Description:	<删除类别触发器>
-- =============================================
ALTER TRIGGER [dbo].[trigCategoryDelete]
   ON [dbo].[category]
   instead of DELETE
AS 
BEGIN
	declare @caId int
	select @caId =id from deleted
	--删除评论
	delete comment where newsId in(select newsId  from news where caId =@caId )
	--删除新闻
	delete news where caId=@caId 
	--删除类别
	delete category where id=@caId 
END
</span>


触发器的作用:

  1)强制比CHECK约束更复杂的数据的完整性

  2)使用自定义的错误提示信息   3)实现数据库中多张表的级联修改   4)比较数据库修改前后数据的状态   5)调用更多的存储过程   6)维护非规范化数据 触发器的优点还有很多,需要我们到实际应用中去探索,以上有不足之处,希望大家批评指正。 

SQLServer触发器的问题

careate trigger trigger_name on B
for insert
as
declare @a varchar(20),
seelct @a=name from inserted //注意:inserted、deleted是SQLServer触发器特殊的表
if not exists( select name from A where name=@a)
begin
rollback transaction
else
commit
end
go
 

sql server里面的触发器怎写?

仔细看看这段代码:
Update BorrowRecord
Set br.StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i
Where br.StudentID=d.StudentID

From BorrowRecord br , Deleted d ,Inserted i
表示用别名br来代替BorrowRecord ,用d来代替Deleted,用d来代替Inserted。

明白了么?

Good Luck!
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2766.html NewsArticle SQL Server触发器,sqlserver触发器 简单介绍: 触发器其实是一种特殊的存储过程,它只有在特定的事件发生时自动执行。存储过程和触发器都是SQL语句和流程控制语句的集合,存储过程通...
评论暂时关闭