触发器实现两表之间的INSERT,DELETE,UPDATE
需求说明:培训记录处录入“外出培训”记录,保存后同步外出培训合同至“合同模块”
培训记录表PX_Record创建触发器
步骤一、新建触发器:[insert_htandAL]
步骤二、当PeiXun_Record表有INSERT,DELETE,UPDATE操作,则在触发器中执行INSERT,DELETE,UPDATE 操作将相关改变同步至合同表Emp_HT,必须用PX_Record表中Pxr_ID字段做唯一标识过滤
执行代码如下:
USE [XXXXX]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[insert_htandAL]
ON [dbo].[PX_Record]
for INSERT,DELETE,UPDATE
AS
BEGIN
--01新增操作
if(exists(select 1 from inserted) and not exists(select 1 from deleted))
insert into Emp_HT (Comp_Code,Ht_code,Ht_empid,Ht_class,Ht_StartDate,Ht_EndDate,Ht_OldID,Ht_Num,Ht_Status,Ht_IsZhiXing,Ht_ContinueDesc,Ht_StopDesc
,Ht_EndDesc,Ht_desc,Ht_memo,createby,createtime,updateby,updatetime,Ht_Company,Ht_Year,G_htzdr,Ht_DocPath,Ht_Template,Ht_TemplatePath,G_pxid)
select a.Comp_Code,Emp_code,Pxr_empid,'02',G_sxDate,G_shxDate,null,1,0,1,null,null
,null,null,Pxr_memo,a.createby,a.createtime,a.updateby,a.updatetime,null,G_qdnx,null,null,null,null,Pxr_ID
from inserted a
inner join Emp_Base b on a.Pxr_empid=b.Emp_id
where isnull(pxr_class,0)=1 and G_ifpxxy='是'
END
--02删除操作
if(not exists(select 1 from inserted) and exists(select 1 from deleted))
begin
delete from Emp_HT
where G_pxid in(select Pxr_ID from deleted)
end
--03更新操作
if(exists(select 1 from inserted) and exists(select 1 from deleted))
begin
update Emp_HT set
Ht_StartDate=a.G_sxDate ,
Ht_EndDate=a.G_shxDate,
Ht_Year=a.G_qdnx,
updateby=a.updateby,
updatetime=a.updatetime
from inserted a
where G_pxid=a.Pxr_ID and isnull(a.pxr_class,0)=1 and a.G_ifpxxy='是'
end
备注说明:
触发器简介:
触发器是一种特殊的存储过程,它的执行不是由程序调用,也不是手动执行,而是由事件来触发。触发器是当对某一个表进行操作。例如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。
转载于:https://blog.51cto.com/1206411/2410568
触发器实现两表之间的INSERT,DELETE,UPDATE相关推荐
- sql server 中用sql实现两个表之间的inert/delete/update
sql 中涉及到两个表CurrentData.dbo.EVUniverse and CurrentData.dbo.Staging_EVUniverse, 从前表到后表操作 ;--INSERT NEW ...
- MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器. 例如创建t1表两个INSERT的触发器: DELIMITER $$ USE `test`$$ DROP T ...
- mysql 5.7 insert_MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器. 例如创建t1表两个INSERT的触发器:DELIMITER $$ USE `test`$$ DROP TR ...
- 笔记:3.5 《数据库系统概论》之基本表更新(INSERT、UPDATE、ALTER、DELETE)与视图VIEW(定义、查询、更新)
转载:3.5 <数据库系统概论>之基本表更新(INSERT.UPDATE.ALTER.DELETE)与视图VIEW(定义.查询.更新)_BitHachi-CSDN博客 0.前言 数据库是S ...
- 3.5 《数据库系统概论》之基本表更新(INSERT、UPDATE、ALTER、DELETE)与视图VIEW(定义、查询、更新)
文章目录 0.前言 1.思维导图 2.基本表更新---TABLE (1)插入数据---INSERT INTO ① 插入元组 ② 插入子查询结果 (2)修改数据---UPDATE SET ① 修改某一个 ...
- mysql两表之间字段匹配concat_实例学习MySQL多表之间字段的匹配
多表之间字段进行匹配的sql语句: 复制代码 代码示例: $sql=$empire->query("select table.title,lianxi,table.dizhi,tabl ...
- MySQL 数据库常用命令—insert delete update select
引言 MySQL 数据库和其它的数据库一样,也支持增(insert)删(delete)改(update)查(select)操作. insert 基本语法规则 insert into table_nam ...
- SqlServer两表之间:根据一个表的字段更新另一个表的字段
经百度查询到如下两种写法: 1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table ...
- 三表左连接(LEFT JOIN) — 两表之间的关系
三表左连接(LEFT JOIN) 问题: 最近遇到需求多表连接,要求A表所有数据均展示,B表和C表关联A表,若A表有的B,C表没有则展示为null,由此引发以下问题: A表作为基表,先关联B表,关 ...
最新文章
- jQuery 的 slideUp 和 slideDown 下拉卷动问题
- PostgreSQL在何处处理 sql查询之三十八
- c#获取电脑硬件信息参数说明(硬盘篇 Win32_DiskDrive)
- OpenPano:如何编写一个全景拼接器
- Oracle触发器详细介绍
- 打印某个进程下的所有线程--Linux环境
- 图说:Windows 8如何关机、重启
- VS Code 新版本重磅发布,迎来 2020 年首个重大更新!
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ④ 初认识阿里天猫精灵官方Genie BT mesh Stack框架, windows平台搭建打印Hello World !
- 神州炫龙蓝天刷bios教程(百分百成功/不成功下面留言)
- ElementUI Plus
- “为什么你们开发这么慢?” 3页ppt讲透:帕金森定律,低效正在杀死你的团队!...
- PTA 循环结构 7-3 简写转全称
- 一只喵的西行记-14 蜗牛的金字塔说
- 2019阿里暑期实习一面
- 基于 Iterative 映射和单纯形法的改进灰狼优化算法-附代码
- Java-----投票系统
- 杰理之PAP接口【篇】
- linux系统下deepin-wine-qq图片加载不出来的解决方案
- 微信小程序Demo之电影评分功能
热门文章
- 数据持久化框架为什么放弃Hibernate、JPA、Mybatis,最终选择JDBCTemplate!
- 本月Github热门开源项目排行榜...
- 把PPT做漂亮点真的有用,研究证明图表美观增加可信度,作者:还会影响论文引用和通过率...
- 目标10亿部?苹果AR眼镜有望明年登场!传搭载Mac级处理器、4K显示屏
- 覆盖近2亿篇论文还免费!沈向洋旗下团队「读论文神器」登B站热搜
- 导师:CNN 开山之作 AlexNet 都复现不了,延毕吧!
- 重磅!华为牵手顶尖985大学
- 大学老师吐血自白:指导学生写论文真是太太太太太难了!
- 这份GitHub 2.3k星的ML论文清单拿好,工作用得上
- 985 博士:导师是院士,直到毕业,我们都没单独说过一句话...