欢迎投稿

今日深度:

触发器--再次出发,触发器--出发

触发器--再次出发,触发器--出发


       关于触发器其实在机房重构中我们就已经涉及到了,有的用的是触发器有的使用存储过程。现在在牛腩中我们又遇到了使用触发器。让我们再次出发看看究竟怎么使用。                 

    在牛腩视频中要实现对删除类别的操作,我们使用一般的SQL语句去删除会出现这样的错误:

    { DELETE语句与REFERENCE约束“FK_news_category”冲突。该冲突发生于数据库“newssystem”,表“dbo.news” 语句终止;}

    出现这种错误的原因就是各表直接有主键外键约束 ,如数据库关系图:

                  

       首先我们知道SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。                  

     要想完美删除类别表下的新闻以及评论就用到了触发器。当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,我们对该表写对应的DML触发器,该触发器自动执行所以这里我们用的触发器应该叫DML触发器。

                 

<span style="font-family:KaiTi_GB2312;">-- =============================================
-- Author:		刘伟
-- Create date: <2014-9-22  11:28
-- 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>


    小结:使用 DML触发器可通过数据库中的相关表实现级联更改,通过级联引用完整性约束可以更有效地执行这些更改。触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。






怎写一个ORACLE触发器出发插入数据?

A3表,字段t1,t2,t3
A4表,字段t1,t2,t3

以下触发器,功能是:在往A3表插入数据后触发,将刚刚插入的一行的数据插入表A4.
create or replace trigger t1
after insert on a3 for each row
begin
--将刚插入行的字段t1,t2,t3插入表A4中
insert into a4 values(:new.t1,:new.t2,:new.t3);
end;
 

SQL触发器,两表结构相同,表A新增一条记录后马上触发把该条记录插入到表B,只可以一条一条触发最新的记录

create trigger Mytrg
on A
for insert
as
begin
insert into B select * from inserted
end

触发器本身的工作原理就是一条一条的处理,插入1条自动处理1次,一次批插入N条,触发器处理N次

for insert 触发器的工作原理:

DBMS在数据进行插入的时候,每插入一条记录后触发触发器,将插入的所有数据保存在inserted临时表中,

以上范例中:insert into B select * from inserted 就是将inserted临时表中的数据插入到B表中,

此次触发器执行完毕,系统自动删除inserted表.如果批插入多条,将再次出发此触发器

基本要求:B表结构和A表结构一模一样.

其结果符合楼主所有要求
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3587.html NewsArticle 触发器--再次出发,触发器--出发 关于触发器其实在机房重构中我们就已经涉及到了,有的用的是触发器有的使用存储过程。现在在牛腩中我们又遇到了使用触发器。让我们再次出发看...
相关文章
    暂无相关文章
评论暂时关闭