SQL Server---觸發器

來源:互聯網
上載者:User

        今天第一次使用SQL Server中的觸發器感覺很方便,本文將簡單的向大家介紹一下SQL Server中的觸發器以及其簡單的使用。我會從其定義、原理、具體的用法分別大家講述。

        定義

        觸發器(trigger)是個特殊的預存程序,它的執行不是由程式調用,也不是手工啟動,而是由某個事件來觸發,比如當對一個表進行操作(insert,delete,update)時就會啟用它執行。

        原理

        觸發器可以查詢其他表,而且可以包含複雜的SQL語句。觸發器也可用於強制參考完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關係。

        SQLServer包括三種常規類型的觸發器:DML觸發器、DDL觸發器和登入觸發器。

        DML觸發器

        當資料庫中表中的資料發生變化時,包括insert,update,delete任意操作,如果我們對該表寫了對應的DML觸發器,那麼該觸發器自動執行。

        DDL觸發器

        它是SqlServer2005新增的觸發器,主要用於審核與規範對資料庫中表,觸發器,視圖等結構上的操作。

        登入觸發器

        登入觸發器將為響應LOGON事件而激發預存程序。

        具體用法

        再敲機房收費系統的時候,在涉及到學生上下機的時候,我們就要對T_Line和T_Online這兩張表進行操作,下機的時候我們需要刪除T_Online表中的資訊將它寫入T_Line中。採用三層架構重構時,頓時覺得從一個表中得到資料返回U層再將其賦值給另一個實體當作參數最終傳入另一張表中很是麻煩。於是我就想到了觸發器。

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<老牛>-- Create date: <2014-6-2 15:28:00>-- Description:<刪除正在上機的學生時同時將相關信--                息添加到學生上機記錄表中>-- =============================================CREATE TRIGGER [dbo].[triq_T_OnlineDelete]   ON  [dbo].[T_Online]    instead of InsertAS BEGINdeclare @CardNo numeric(11, 0)declare @studentNo  numeric(11, 0)declare @studentName varchar(10)--擷取參數資訊select @CardNo=cardNo,@studentNo=studentNo ,@studentName=studentName from deleted --新增學生上機記錄insert into T_Line (cardNo,studentNo ,studentName ) values (@CardNo,@studentNo,@studentName)--刪除正在上機的學生資訊delete T_Online where cardNo =@CardNoENDGO

(PS:上段代碼(經測試正確)只用到了表中的幾個欄位其他欄位也可用類似方法,特別要注意的是怎樣擷取下機時間(hh-mm-ss)和下機日期(yyyy-mm-dd),例如:Select CONVERT(varchar(100),GETDATE(), 24;Select CONVERT (varchar(10),getdate(),120))

心得體會

        寫到這裡又想起了那句話“不將就是發現的原動力”,我們學習過程中也用到SQL Server一段時間了,之前我們也接觸到了很多理論上的東西總感覺很高深的樣子,總想著我會簡單的增刪改查就能解決目前的問題了。只有我們不再將就的時候我們學習了新的技術,才會感覺到,原來也就這麼回事。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.