牛腩新聞發布系統(1)級聯表的操作

來源:互聯網
上載者:User


         觸發器是一種特殊類型的預存程序,它不同於普通的預存程序。觸發器主要是通過事件進行觸發而被執行的,而預存程序可以通過預存程序名稱而被直接調用。當往某一個表格中插入記錄、修改記錄或者刪除記錄時,SQL SERVER就會自動執行觸發器所定義的SQL語句,以確保資料的完整性。        很多時候我們有這樣一種需求,某一分類資訊是屬於另一個大的分類,當需要刪除大的分類時,它下面小的分類實際也應該一起刪除的,而且表之間設定了主鍵和外鍵,例如有三個表示:新聞分類表、新聞表、評論表。        它們分別為一對多的關係,如果你刪除某一個新聞分類,這個分類裡的新聞以及每條新聞的評論應該都刪除,這三個表之間如果建立了外鍵,再刪分類表或新聞表時就會出錯,而用觸發器可以很好的解決。               因此,在刪除新聞分類時,要先刪除它下面的新聞,即新聞表中屬於該分類下的記錄。       建立觸發器代碼如下:               在觸發器中需要注意代碼中紅色框和綠色框框中內容,紅色框中可以是Instead of 或after ,分別表示UPDATE、 INSERT 、DELETE執行之前或之後觸發。        AFTER:表示只有在執行了指定的操作INSERT、DELETE、UPDATE之後觸發器才被啟用,執行觸發器中的SQL語句。       

        INSTEAD OF:當為表或視圖定義了針對某一操作INSERT、DELETE、UPDATE的INSTEAD OF類型觸發器,且執行了相應的操作時,儘管觸發器被觸發,但相應的操作並不被執行,而啟動並執行僅是觸發器SQL語句本身。        這句話表明如果是INSTEAD OF類型觸發器,那個執行的SQL語句本身不再執行,而是只執行觸發器中內容。        如果是三個表之間串聯刪除和兩個表之間刪除類似,不同的是再刪除第三表中記錄時,所有的評論不會只屬於一個新聞類,可以用“In”關鍵字,刪除。如下:              可能你對觸發器語句中的deleted不理解,這涉及到觸發器工作原理。      

        每個觸發器有兩個特殊的表:插入表(inserted)和刪除表(deleted)。這兩個表是邏輯表,並且這兩個表是由系統管理的,儲存在記憶體中,不是儲存在資料庫中,因此不允許使用者直接對其修改。這兩個表的結構總是與被該觸發器作用的表有相同的表結構。這兩個表是動態駐留在記憶體中的,當觸發器工作完成,這兩個表也被刪除。這兩個表主要儲存因使用者操作而被影響到的原資料值或新資料值;另外這兩個表是唯讀,即使用者不能向這兩個表寫入內容,但可以參考資料表中的資料。        觸發器和事件觸發一樣,如單擊事件,它是事件觸發事件,讓多個有聯絡的業務、操作關聯起來,需要根據需要靈活使用。
         

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.