触发器(一)

触发器:

触发器(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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为你写诗_xue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值