这里以实际例子对触发器的应用对触发器的理解与应用来得更实际

一.更新触发器(Update)

临时表:inserted表有数据(新数据)     Deleted表有数据(旧数据)

实例说明:当表更新时,并检测到更新了交期与数量字段,并连表更新另外一张表的数据(交期与数量),同时对历史更新的数据进行备份

-- =======================================================
-- 触发器概述:更新 交期与数量
-- ========================================================
CREATE TRIGGER [dbo].[mktdelivery_update] ON [dbo].[mktdelivery]
FOR UPDATE
AS
if (update(deldate) OR update(delqty))
BEGIN
UPDATE aa SET aa.okdate = bb.deldate,aa.qty = bb.delqty
FROM mkthtpsb aa INNER JOIN INSERTED bb ON aa.cno = bb.shipway AND aa.pdctno = bb.pdctno INSERT mkthtpsb_back(ID,cno,okdate,pdctno,qty,addr)
SELECT ID,cno,deldate,pdctno,delqty,HOST_NAME() FROM Deleted
END

二.插入触发器(Insert)

临时表:Inserted表有数据,   Deleted表无数据

实例说明:当插入记录时,插入的数据会记录在Inserted表中,拿到订单类型是否时,并更新另外一个表的数据(交期与数量)

-- =========================================================
-- 触发器概述:插入 更新(交期与数量) NP单更新产地确认
-- ========================================================
ALTER TRIGGER [dbo].[mktdelivery_insert] ON [dbo].[mktdelivery]
FOR INSERT
AS
DECLARE @isnewpdctno VARCHAR(10)
DECLARE @cno VARCHAR(20)
DECLARE @deldate DATETIME
DECLARE @delqty INT
SELECT @isnewpdctno = isnewpdctno,@cno = shipway,@deldate=deldate,@delqty=delqty FROM INSERTED
IF (@isnewpdctno IN ('否') )
BEGIN
UPDATE aa SET aa.FactoryConfirmDate = GETDATE(),aa.okdate = @deldate,aa.qty = @delqty
FROM mkthtpsb aa
WHERE cno = @cno AND isnewpdctno IN ('否')
END

三.删除触发器(Deleted)

临时表:Inserted表无数据,Deleted表有数据

实例说明:当删除记录时,删除的数据会记录在Deleted表中,在删除前对关键数据进行备份

-- =======================================================
-- 触发器概述:删除数据 对关键数据进行备份记录
-- ========================================================
ALTER TRIGGER [dbo].[mkthtpsb_del] on [fp_db].[dbo].[mkthtpsb]
FOR DELETE
AS
INSERT mkthtpsb_back(ID,cno,getdate,okdate,pdctno,custpno,qty,addr)
SELECT ID,cno,[getdate],okdate,pdctno,custpno,qty,HOST_NAME() FROM Deleted

最新文章

  1. 基于服务(Web Service)的文件管理Winform程序实现
  2. jQuery源码-jQuery.fn.attr与jQuery.fn.prop
  3. iOS学习09C语言函数指针
  4. Bootstrap_按钮工具栏
  5. iOS开发--UIKit控件之UISearchBar(搜索栏)
  6. Android:使用ViewPager实现左右滑动切换图片(图上有点点)
  7. css实现网页布局随滚轮变化响应移动
  8. Linux iconv使用
  9. MVC之Session State性能
  10. vconfig
  11. 为神马精确Sprite的碰撞形状不通过简单的放大Sprite的尺寸来解决?
  12. 数据结构学习java(一点五)链式顺序表(链表)
  13. 前端基础-JavaScript
  14. XAML中用一字符即可展示漂亮的图型
  15. Visual Studio Code compile error - launch.json must be configured...
  16. 《剑指offer》第十八题(在O(1)时间删除链表结点)
  17. 登录MySQL提示ERROR 1045 (28000)错误解决方法
  18. [BZOJ 1124][POI 2008] 枪战 Maf
  19. SQL简单基础(1)
  20. 进程&线程间通信方式总结

热门文章

  1. 【反向并查集、联通图】P1197 [JSOI2008]星球大战
  2. Linux下挂载新磁盘
  3. db2构建临时结果集
  4. 深度完整的了解MySQL锁
  5. eclipse自动提示配置
  6. Python基础-获取当前目录,上级目录,上上级目录
  7. BZOJ 3747 洛谷 3582 [POI2015]Kinoman
  8. Codeforces 934D/933B - A Determined Cleanup
  9. Leetcode 90.子集
  10. 一文教你用 Neo4j 快速构建明星关系图谱