广告
返回顶部
首页 > 资讯 > 数据库 >触发器实现两表之间的INSERT,DELETE,UPDATE
  • 207
分享到

触发器实现两表之间的INSERT,DELETE,UPDATE

2024-04-02 19:04:59 207人浏览 泡泡鱼
摘要

需求说明:培训记录处录入“外出培训”记录,保存后同步外出培训合同至“合同模块”培训记录表PX_Record创建触发器步骤一、新建触发器:[insert_htandAL]步骤二、当PeiXun_Record表

需求说明:培训记录处录入“外出培训”记录,保存后同步外出培训合同至“合同模块”


培训记录表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

备注说明:

触发器实现两表之间的INSERT,DELETE,UPDATE


触发器简介:

触发器是一种特殊的存储过程,它的执行不是由程序调用,也不是手动执行,而是由事件来触发。触发器是当对某一个表进行操作。例如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。



-- 查询已存在的触发器
select * from sys.triggers;
select * from sys.objects where type = 'TR';
select * from sysobjects where xtype='TR'


 -- 查看触发器触发事件对象
 select a.type_desc,b.* from sys.trigger_events a
 inner join sys.triggers b on a.object_id = b.object_id
 where b.name = 'insert_hetongandAskLeave';
 
 -- 查询触发器的 T-sql 文本
  exec sp_helptext 'insert_hetongandAskLeave';
 
 
--禁用触发器
disable trigger trigger_Stu_InsteadOf on Student;    -- trigger_Stu_InsteadOf 触发器名称
--启用触发器
enable trigger trigger_Stu_InsteadOf on Student;    -- trigger_Stu_InsteadOf 触发器名称



 

您可能感兴趣的文档:

--结束END--

本文标题: 触发器实现两表之间的INSERT,DELETE,UPDATE

本文链接: https://www.lsjlt.com/news/39067.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 触发器实现两表之间的INSERT,DELETE,UPDATE
    需求说明:培训记录处录入“外出培训”记录,保存后同步外出培训合同至“合同模块”培训记录表PX_Record创建触发器步骤一、新建触发器:[insert_htandAL]步骤二、当PeiXun_Record表...
    99+
    2022-10-18
  • 如何实现SQL查询出表、存储过程、触发器的创建时间和最后修改时间
    本篇内容主要讲解“如何实现SQL查询出表、存储过程、触发器的创建时间和最后修改时间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现SQL查询出表、存储过程...
    99+
    2022-10-18
  • 利用SQL Server触发器实现表的历史修改痕迹记录
    在很多应用程序开发中,需要记录某些数据表的历史记录或修改痕迹,以便日后出现数据错误时进行数据排查。这种业务需求,我们可以通过数据库的触发器来轻松实现历史记录功能。 本文以SQL Server 2005数据库...
    99+
    2022-10-18
  • SAP MM 公司间STO里交货单PGI之后自动触发内向交货单功能的实现
    SAP MM 公司间STO里交货单PGI之后自动触发内向交货单功能的实现笔者所在的项目上的公司间STO的流程里,发货公司在做PGI之后系统自动触发收货公司的内向交货单。这个功能是通过交货单的Output来实现的。如下单据为例说明,STO 4...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作