触发器(一)

触发器:

触发器(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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章