觸發器--再次出發,觸發器--出發

來源:互聯網
上載者:User

觸發器--再次出發,觸發器--出發

       關於觸發器其實在機房重構中我們就已經涉及到了,有的用的是觸發器有的使用預存程序。現在在牛腩中我們又遇到了使用觸發器。讓我們再次出發看看究竟怎麼使用。                 

    在牛腩視頻中要實現對刪除類別的操作,我們使用一般的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 DELETEAS BEGINdeclare @caId intselect @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=@caIdEND</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表結構一模一樣.

其結果符合樓主所有要求
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.