sqlserver触发器insert,delete,update

-- =============================================
-- Author:        王伟
-- Create date: 2017-07-06
-- Description:    增、删、改开放时间表时,同步数据至考勤安排表
-- =============================================
CREATE TRIGGER [dbo].[TR_LM_SYS_KaiFangShiJian_IDU]
   ON  [dbo].[LM_SYS_KaiFangShiJian]
   FOR INSERT,DELETE,UPDATE
AS
BEGIN
    --新增
    if(exists(select 1 from inserted) and not exists(select 1 from deleted))
    begin
        INSERT  INTO LM_KQ_KaoQingAnPai
                ( KaoQingAnPaiID ,
                  ShiYanShiID ,
                  KaiShiRiQi ,
                  JieShuRiQi ,

                  XingQingBianHao ,
                  KaiShiShiJian ,
                  JieShuShiJian ,
                  SystemType ,

                  CreateOn ,
                  CreateDate ,
                  UpdateOn ,
                  UpdateDate
                )
                 SELECT CONVERT(VARCHAR(100), A.KaiFangShiJianID) AS KaiFangShiJianID ,
                        CONVERT(VARCHAR(100), A.ShiYanShiID) AS ShiYanShiID ,
                        A.KaiShiRiQi ,
                        A.JieShuRiQi ,

                        A.XingQingBianHao ,
                        A.KaiShiShiJian ,
                        A.JieShuShiJian ,
                        1 AS SystemType ,

                        NULL ,
                        GETDATE() ,
                        NULL ,
                        GETDATE()
                FROM    Inserted AS A
                        INNER JOIN LM_SYS_ShiYanShiXinXi AS B ON A.ShiYanShiID = B.ShiYanShiID
                        INNER JOIN LM_MJ_Men AS C ON B.MenID = C.MenID
                WHERE   A.ShiFouMoRen = 0
                        AND B.IsDelete = 0
                        AND C.IsDelete = 0;
    end                         

    --删除
    if(not exists(select 1 from inserted) and exists(select 1 from deleted))
    begin
        delete from LM_KQ_KaoQingAnPai
        where KaoQingAnPaiID in(select KaiFangShiJianID from deleted)
    end

    --更新
    if(exists(select 1 from inserted) and exists(select 1 from deleted))
    begin
        update LM_KQ_KaoQingAnPai set ShiYanShiID=a.KaiFangShiJianID
        ,KaiShiRiQi=a.KaiShiRiQi,JieShuRiQi=a.JieShuRiQi
        ,XingQingBianHao=a.XingQingBianHao,KaiShiShiJian=a.KaiShiShiJian
        ,JieShuShiJian=a.JieShuShiJian,UpdateDate=GETDATE()
        from inserted a
        where KaoQingAnPaiID=a.KaiFangShiJianID
    end

END

GO
时间: 2024-08-25 21:48:40

sqlserver触发器insert,delete,update的相关文章

MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器

在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器. 例如创建t1表两个INSERT的触发器: DELIMITER $$ USE `test`$$ DROP TRIGGER /*!50032 IF EXISTS */ `t1_1`$$ CREATE     /*!50017 DEFINER = 'admin'@'%' */     TRIGGER `t1_1` AFTER INSERT ON `t1`      FOR EACH ROW BEGIN INS

DML -- 数据操纵预言: insert/delete/update --多表连接修改/.多表连接删除/多表连接查询-- truncate 和 delete的区别

/* DML -- 数据操纵预言: insert/delete/update */ #一: 插入语句 /* 语法1: insert into 表名(列名,..,列名....) values(值1,值2,...),(值1,值2,...),(值1,值2,...); 语法2: insert into 表名 set 列名1=值1,列名2=值2,....; */ /*二: 修改语句 1.修改单表的记录 语法: update 表名 set 列1=新值1,列2=新值2,列2=新值2... where 筛选条件

PostgreSQL之INSERT,DELETE,UPDATE

插入数据 每一列都赋值的话,可以省略列名 INSERT INTO Product VALUES(value1,value2,DEFAULT,value3,NULL) 只对部分列赋值,需要加上列名.被省略列名的列,如果存在默认值则默认值,如果不存在默认值则NULL.如果既不存在默认值又有非空约束,则执行失败 INSERT INTO Product (column1,column2,column3) VALUES(value1,value2,value3) 删除数据 清空表而不删除表 DELETE

MyBatis insert/delete/update 的返回值

insert,返回值是:新插入行的主键(primary key):需要包含<selectKey>语句,才会返回主键,否则返回值为null. update/delete,返回值是:更新或删除的行数:无需指明resultClass:但如果有约束异常而删除失败,只能去捕捉异常. 参考资料: 1.Mybatis/Ibatis,数据库操作的返回值 https://blog.csdn.net/gaojinshan/article/details/24308313 原文地址:https://blog.csd

sqlserver 触发器

 何为触发器? 在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程,它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约束. SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表.Deleted和Inserted分别代表出发事件的表“旧的一条记录”和“新的一条记录”.这两个表由系统来维护﹐它们存在于内存中而不是在数据库中.这两

触发器中判断操作是Insert还是Update还是Delete

在Sql Server触发器中判断操作是Insert还是Update还是Delete DECLARE @IsInsert bit, @IsUpdate bit, @IsDelete bit IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted) SET @IsInsert = 1 ELSE SET @IsInsert = 0 IF EXISTS(SELECT 1 FROM inserted) AND EXIS

深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete[转]

上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介绍mapper映射文件的配置, 这是mybatis的核心之一,一定要学好.在mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql . 本篇文章将简单介绍 in

利用insert,update和delete注入获取数据

0x00 简介 利用SQL注入获取数据库数据,利用的方法可以大致分为联合查询.报错.布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的.那么,当我们发现了一个基于insert.update.delete语句的注射点时(比如有的网站会记录用户浏览记录,包括referer.client_ip.user-agent等,还有类似于用户注册.密码修改.信息删除等功能),还可以用如上方法获取我们需要的数据吗?在这里,我们以MYSQL的显错为例,看一下如何在insert.u

mysql并发insert deadlock分析以及解决,无delete/update/for update

关于并发insert操作发生deadlock这个情况,一直有很多争议,而且网上的帖子所有的例证和模拟其实不一定反映了真实的情况,例如:https://www.percona.com/blog/2012/03/27/innodbs-gap-locks/http://www.cnblogs.com/LBSer/p/5183300.html http://www.cnblogs.com/bamboos/p/3532150.html 不少的类似例子应该来说其实不少有猜测和为了重现而重现的目的.事实上开两