觸發器(一)

觸發器:

觸發器(trigger)是個特殊的存儲過程,它的執行不是由程序調用,也不是手工啓動,而是由個事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用於加強數據的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數據字典中查到。
  觸發器可以查詢其他表,而且可以包含複雜的 SQL 語句。它們主要用於強制服從複雜的業務規則或要求。例如:您可以根據客戶當前的帳戶狀態,控制是否允許插入新訂單。
  觸發器也可用於強制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關係。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用數據庫關係圖,則可以在表之間創建關係以自動創建外鍵約束。


USE [mmzqoa]

GO
/****** Object:  Trigger [dbo].[TR_T_HYSGLDOC_BASE_UPDATE]    Script Date: 01/24/2017 16:58:04 ******/
SET ANSI_NULLS ON
-- 當 SET ANSI_NULLS 爲 OFF 時,等於 (=) 和不等於 (<>) 比較運算符不遵從 SQL-92 標準。使用 WHERE column_name = NULL 的 SELECT 語句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 語句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語句返回所有不爲 XYZ_value 也不爲 NULL 的行。
GO
SET QUOTED_IDENTIFIER ON
-- 當 SET QUOTED_IDENTIFIER 爲 ON 時,標識符可以由雙引號分隔,而文字必須由單引號分隔。當 SET QUOTED_IDENTIFIER 爲 OFF 時,標識符不可加引號,且必須符合所有 Transact-SQL 標識符規則。 
GO
create trigger [dbo].[TR_T_HYSGLDOC_BASE_UPDATE]
on [dbo].[T_HYSGLDOC_BASE]
for update
as
begin
set nocount on
if update(BASE_CREATEUSERID) or update(BASE_CREATEUSERNAME) or update(BASE_CREATEDATE) or update(BASE_KIND_UUID)
  or update(BASE_HEADER_JJCD) or update(BASE_HEADER_XH) or update(BASE_BODY_BT) or update(BASE_EXT_NGDW)
  or update(BASE_EXT_NGDW_ID) or update(BASE_EXT_SEQ) or update(BASE_RECEIVERID) or update(BASE_RECEIVERNAME)
  or update(BASE_ARCHIVE_FLAG) or update(BASE_HANDLERNAME) or update(BASE_BWBH) or update(BASE_IS_ARCHIVING)
begin
update t set t.BASE_CREATEUSERID = i.BASE_CREATEUSERID,
t.BASE_CREATEUSERNAME = i.BASE_CREATEUSERNAME,
t.BASE_CREATEDATE = i.BASE_CREATEDATE,
t.BASE_KIND_UUID = i.BASE_KIND_UUID,
t.BASE_HEADER_JJCD = i.BASE_HEADER_JJCD,
t.BASE_HEADER_XH = i.BASE_HEADER_XH,
t.BASE_BODY_BT = i.BASE_BODY_BT,
t.BASE_EXT_NGDW = i.BASE_EXT_NGDW,
t.BASE_EXT_NGDW_ID = i.BASE_EXT_NGDW_ID,
t.BASE_EXT_SEQ = i.BASE_EXT_SEQ,
t.BASE_RECEIVERID = i.BASE_RECEIVERID,
t.BASE_RECEIVERNAME = i.BASE_RECEIVERNAME,
t.BASE_ARCHIVE_FLAG = i.BASE_ARCHIVE_FLAG,
t.BASE_HANDLERNAME = i.BASE_HANDLERNAME,
t.BASE_BWBH = i.BASE_BWBH,
t.BASE_IS_ARCHIVING = i.BASE_IS_ARCHIVING
from T_DOC_ACCESS_MERGE_ALL t, inserted i
where t.BASE_UUID = i.BASE_UUID
end
end
GO




發佈了91 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章