標籤:
部門表_刪除:
USE [test]GO/****** Object: Trigger [dbo].[部門_Delete] Script Date: 2015/8/31 16:41:46 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,Ammy,Name>-- Create date: <Create Date,,>-- Description: <Description,顯示一次操作觸發器修改了多少條記錄,>--因為每個操作類型在一次操作時,對一個觸發器只啟用一次,但是啟動並執行操作可能更新或刪除了10條記錄,--Inserted表和Deleted表裡會有10條記錄,用系統變數@@ROWCOUNT 可以得知上一次操作所更改的記錄數-- =============================================CREATE TRIGGER [dbo].[部門_Delete]ON [test].[dbo].[部門表]AFTER DELETEASBEGIN PRINT ‘您此次刪除了‘+CAST(@@ROWCOUNT AS VARCHAR)+‘條記錄‘ENDGO
部門表_插入:
USE [test]GO/****** Object: Trigger [dbo].[部門_Insert] Script Date: 2015/8/31 16:42:29 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,Ammy,Name>-- Create date: <Create Date,2015/08/19,>-- Description: <Description,部門表插入時發出提示:又添加了一種產品,並向日誌表插入一條記錄>-- =============================================CREATE TRIGGER [dbo].[部門_Insert]ON [dbo].[部門表]AFTER INSERTASBEGIN DECLARE @事件部門名稱 NVARCHAR(50) SELECT @事件部門名稱=部門名稱 FROM inserted IF(SELECT LEN(電話號碼) FROM inserted )<>11 BEGIN PRINT‘電話號碼位元必須是11位‘ ROLLBACK TRANSACTION END ELSE BEGIN print ‘又添加了一個部門‘ INSERT INTO test.dbo.日誌表(事件名,事件人,事件時間)VALUES(‘添加新部門:‘[email protected]事件部門名稱,‘admin‘,GETDATE()); --設定此TRIGGER的巢狀型別為true,如果在 dbo.日誌表 上建立觸發器,會觸發啟用dbo.日誌表_Insert 觸發器 ENDENDGO
部門表_更新:
USE [test]GO/****** Object: Trigger [dbo].[部門表_只能修改部門編號] Script Date: 2015/8/31 16:43:17 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,Ammy,Name>-- Create date: <Create Date,2015-08-20,>-- Description: <Description,用update(欄位名),完成只能修改某欄位的觸發器>-- =============================================CREATE TRIGGER [dbo].[部門表_只能修改部門編號]ON [dbo].[部門表]Instead of UPDATEASBEGIN SET NOCOUNT ON; IF UPDATE(部門編號) BEGIN DECLARE @部門編號 NVARCHAR(20), @部門名稱 NVARCHAR(20), @部門職責 Nvarchar(20) SET @部門編號=(SELECT 部門編號 FROM inserted) SET @部門名稱=(SELECT 部門名稱 FROM inserted) SET @部門職責 =(SELECT 部門職責 FROM inserted) UPDATE 部門表 SET 部門編號=@部門編號 WHERE 部門名稱[email protected]部門名稱--AND 部門編號[email protected]部門編號 AND @部門職責=@部門職責 --這種寫法很不好,因為只能操作的語句只能按這種修改才起作用 END ELSE BEGIN PRINT ‘只能修改部門編號‘ RAISERROR(‘除了部門編號之外的欄位都不允許修改‘,16,5) --PRINT 輸出自訂資訊,但是只能在查詢編輯器窗格中運行SQL語句才能看到這些自訂的資訊, --而其他的前端應用程式都不會顯示這些自訂的資訊 ENDENDGO
日誌表觸發器:
USE [test]GO/****** Object: Trigger [dbo].[日誌表_Insert] Script Date: 2015/8/31 16:44:11 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- =============================================CREATE TRIGGER [dbo].[日誌表_Insert]ON [test].[dbo].[日誌表]AFTER INSERTAS BEGIN PRINT‘資料庫又有記錄變動了‘END GO
資料庫觸發器_trigger