PCB SQL Server 触发器应用实例
这里以实际例子对触发器的应用对触发器的理解与应用来得更实际
一.更新触发器(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
PCB SQL Server 触发器应用实例的更多相关文章
- PCB SQL SERVER 正则应用实例
我们用过SQL SERVER的都知道,SQL SERVER它本身是不自带正则表达式的,因为没有,所以基本都没用过啊, 但我们在C#中对文本匹配用正则的方式处理非常好用,省得你写一堆代码实现匹配,多简洁 ...
- 由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。
错误:由于启动用户实例的进程时出错,导致无法生成SQL Server的用户实例. 原因:添加安装SQLEXPRESS时,估计装在了不同的目录下: 解决方法:关闭Sqlserver及相关的程序,删除目录 ...
- sql server触发器的例子
发布:thebaby 来源:脚本学堂 [大 中 小] 本文介绍下,在sql server数据库中使用触发器的简单例子,有需要的朋友可以参考下,希望对你有一定的帮助. 原文地址:http:/ ...
- 15、SQL Server 触发器
SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器 ...
- (转)SQL Server 触发器
SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 ...
- 自己写的sql server触发器练练--高手请您跳过吧
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] ...
- 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例
/”应用程序中的服务器错误. 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例.请确保该用户在此计算机上有本地用户配置文件.该连接将关闭. 堆栈跟踪: [Sql ...
- sql server 触发器详细应用
SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发 ...
- SQL server触发器中 update insert delete 分别给写个例子被。
SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...
随机推荐
- linux下C/C++程序的内存布局
内核空间和用户空间: 我们在编写程序时使用的内存空间叫虚拟内存,程序在运行时,要完成虚拟内存到物理内存的转换.假如在32位环境上,理论上我们可以使用的虚拟内存空间是4GB,但实际上这4GB并不能完全给 ...
- CF 429B B.Working out (四角dp)
题意: 两个人一个从左上角一个从左下角分别开始走分别走向右下角和右上角,(矩阵每个格子有数)问到达终点后可以得到的最大数是多少,并且条件是他们两个相遇的时候那个点的数不能算 思路: 首先这道题如果暴力 ...
- Springboot2.0中jpa默认创建的mysql表为myisam引擎问题
使用Springboot2.0后,使用jpa操作mysql数据库时,默认创建的表的引擎是myisam,myisam是不能加外键的,找了一些资源,最终可以用此方法解决! yml格式: spring: j ...
- Linux修改系统时间与时区
GMT (Greewich Mean Time) 格林威治标准时间:GMT是老的时间计量标准,根据地球的自转和公转来计算时间,也就是太阳每天经过位于英国伦敦郊区的皇家格林尼治天文台的标准时间就是中午 ...
- CF441D
题目大意 给出一个有n个数的序列 求符合 区间各数或起来的数大于区间最大数 的区间的个数 题解 预处理出每个数每一位是0的那位左边最近的1和右边最近的1,用单调栈找出每个最大值所在的区间的左右端点,统 ...
- vue axios请求超时,设置重新请求的完美解决方法
//在main.js设置全局的请求次数,请求的间隙 axios.defaults.retry = 4; axios.defaults.retryDelay = 1000; axios.intercep ...
- 初识iBatis
在JAVA EE应用程序中,持久层框架常用的有:Hibernate和IBATIS(或MyBatis),Hibernate是全自动的,IBatis是半自动的. IBatis的主要的作用是把SQL语句从我 ...
- MyBatis3错误:Parameter 'id' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]或者Parameter '0' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
这个问题涉及到MyBatis3在使用select节点查询时传递多个参数的问题.问题分析如下: 1.如果是单个查询一般是这样配置: <select id="getUserArticles ...
- go语言中log包的使用
package main import ( "github.com/robertkrimen/otto" "log" ) func main() { log.P ...
- python 元组不变 列表可变
python 元组不变 列表可变 1, --元组,注意要有逗号: [1] --列表 竟然才开始写python blog: