Create TRIGGER [dbo].[tr_Delete_AllocationedDN]    --删除指定账户已分配未拣货的任务
ON [dbo].[FRU_PickLocationNew] --触发的表名
AFTER UPDATE --为什么触发
AS
IF UPDATE(IsUse) --哪个字段变更引发的触发?
BEGIN
IF ( ( SELECT IsUse
FROM inserted
) = 0 )
BEGIN
DELETE FROM WMS_FRU_DNAllocationToAccountNew
WHERE ID IN (
SELECT fdt.ID
FROM ( SELECT DISTINCT
Account
FROM dbo.FRU_PickLocationNew
WHERE IsUse = 0
) fpln
LEFT JOIN WMS_FRU_DNAllocationToAccountNew fdt ON fdt.Picker = fpln.Account
INNER JOIN dbo.WMS_Outbound wo ON wo.UserDefineAttribute01 = fdt.DN
AND WO.PickState <> 2
AND wo.ShipmentState <> 3
INNER JOIN dbo.WMS_OutboundPart wop ON wop.OutboundID = wo.OutboundID
INNER JOIN dbo.WMS_OutboundPick wopp ON wopp.OutboundPartID = wop.OutboundPartID
AND wopp.LocationCode = fdt.LocationCode
AND fdt.DN = wo.UserDefineAttribute01
AND fdt.PartNo = wopp.PartNO
WHERE ISNULL(wopp.PickBy, '') = ''
AND fpln.Account IN ( SELECT
Account
FROM
deleted ) )
END
END

表FRU_PickLocationNew(配置账户基础表)中有个字段IsUse(是否启用),一旦被更新成0(不启用)时,将表WMS_FRU_DNAllocationToAccountNew中对应的账户下所有已分配未完成的任务delete掉

触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1.插入操作(Insert) 
Inserted表有数据,Deleted表无数据

2.删除操作(Delete) 
Inserted表无数据,Deleted表有数据

3.更新操作(Update) 
Inserted表有数据(新数据),Deleted表有数据(旧数据)

sqlserver创建触发器的更多相关文章

  1. 在SQLServer使用触发器实现数据完整性

    1.实现数据完整性的手段 在sqlserver中,在服务器端实现数据完整性主要有两种手段:一种是在创建表时定义数据完整性,主要分为:实体完整性.域完整性.和级联参照完整性:实现的手段是创建主键约束.唯 ...

  2. [SqlServer]创建链接服务器

    把一个数据库中数据表中的内容,从一个SQL SERVER服务器 导出到另一个SQL Server服务器 不同服务器数据库之间的数据操作 --创建链接服务器  exec sp_addlinkedserv ...

  3. mysql创建触发器

    触发器语句只有一句话 可以省略begin和end CREATE trigger `do_praise` after insert on praise for each row update post ...

  4. sqlserver数据库触发器和存储过程案例学习

      --创建表 create table zhuangzhan ( name ), code ) ); --往表添加一列 alter table zhuangzhan add descition in ...

  5. Oracle创建触发器实现主键自增

    CREATE OR REPLACE TRIGGER "trigger_empl" before insert on extjsTest1.t_empl for each row b ...

  6. mssql 创建触发器

    MS-SMS里创建触发器: 首先右击表内的触发器文件夹图标 然后输入触发器创建指令,一下案例:(添加创建时间) 创建: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFI ...

  7. SqlServer之触发器

    1.触发器之理论: 触发器(Trigger)是一种特殊类型的存储过程,是在用户对某一种表的数据进行UPDATE.INSERT 和 DELETE 操作时被触发执行的一段程序.触发器有助于强制引用完整性, ...

  8. SqlServer创建数据表描述及列描述信息

    SqlServer创建数据表描述及列描述信息 Intro Q: 为什么要创建描述信息? A: 鼠标悬停在对应表和列上时,会出现描述信息,可以提高工作的效率,借助工具我们根据数据表可以生成Model,可 ...

  9. oracle创建触发器及作用举例

    --创建触发器及作用举例 create or replace trigger tri before delete on emp --在删除emp表数据之前需要做的事根据自己的业务去写,before是在 ...

随机推荐

  1. 塞尔达:旷野之息个人对比上古卷轴V:天际

    上古卷轴5是我之前玩过最优秀的作品.玩塞尔达的时候就有跟上古卷轴5比对,真的都是神作.两个游戏的自由度都是真的高. 主线剧情上,老滚5印象不深了,当时就知道战斗,只记住了开头砍头现场,还有奥杜因这个龙 ...

  2. php学习笔记-PHP中的几个取整函数

    floor是向下取整,比如4.5,它是在4和5之间的一个数,那么结果就是4. ceil是向上取整,比如3.7,它是在3和4之间的一个数,那么结果就是4. round是对一个数四舍五入,小数部分如果小于 ...

  3. vs2013错误 1 Unable to find messages file 'cscui.dll'

    最近使用VS编译的时候,提示错误 错误 1 Unable to find messages file 'cscui.dll' 搜索后,几乎只有1个结果,就是搜索cscui.dll  把正常大小的文件替 ...

  4. js 实现发布订阅模式

    /* Pubsub */ function Pubsub(){ //存放事件和对应的处理方法 this.handles = {}; } Pubsub.prototype = { //传入事件类型typ ...

  5. js基础(创建标签)

    创建标签 var divBox1 = document.getElementById('box1'); var p = document.createElement('p'); p.innerHTML ...

  6. 2017 Gartner Hype Cycle for Emerging Technologies: AI, AR/VR, Digital Platforms

  7. IT兄弟连 JavaWeb教程 创建异步请求对象

    异步请求对象:XMLHttpRequest对象,通过该对象向服务器发送异步请求.它是异步请求的技术,所有的现代浏览器(IE7+.FireFox.Chrome.Safari以及Opera)都支持,老版本 ...

  8. linux设置重启

    crontab -e 0 6 * * * reboot service crond restart

  9. Luogu P2341 [HAOI2006]受欢迎的牛 SCC缩点

    把强连通分量缩点,如果有且仅有一个出度为0的强连通分量,那么答案就是他的size:如果有多个入度为0的,那么没有明星牛. #include<cstdio> #include<iost ...

  10. 洛谷P2664 树上游戏

    https://www.luogu.org/problemnew/show/P2664 #include<cstdio> #include<algorithm> #includ ...