加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer创建触发器,更新表

发布时间:2020-12-12 15:06:11 所属栏目:MsSql教程 来源:网络整理
导读:在SQLServer,触发器,插入、更新、删除状态: CREATE TRIGGER t_inms_alarms ON [PHS].[dbo].[AlarmCurrent] FOR INSERT,DELETE AS DECLARE @rows int SELECT @rows = @@rowcount IF @rows = 0 return --如果表是插入,则同步更新AlarmsMiddleTbl IF EXISTS

在SQLServer,触发器,插入、更新、删除状态: CREATE TRIGGER t_inms_alarms
  ON [PHS].[dbo].[AlarmCurrent]
  FOR INSERT,DELETE
  AS
  DECLARE @rows int
  SELECT @rows = @@rowcount
  IF @rows = 0
  return
  --如果表是插入,则同步更新AlarmsMiddleTbl
  IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
  BEGIN
  INSERT INTO [PHS].[dbo].[AlarmsMiddleTbl]
  SELECT i.[Id],i.[SequenceId],i.[code],i.[alarmdefineid],
  CONVERT(varchar,i.[occurTime],120),i.[confirmation],i.[ConfirmationTime],
  i.[MaintenanceName],i.[MaintenanceProcedure],
  i.[ClearTime],i.[screen],CONVERT(varchar,getdate(),120)
  FROM inserted i
  END
  --如果表是更新某个字段,则同步更新AlarmsMiddleTbl
  IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted) AND
  UPDATE(ConfirmationTime)
  BEGIN
  INSERT INTO [PHS].[dbo].[AlarmsMiddleTbl]
  SELECT d.[Id],d.[SequenceId],d.[code],d.[alarmdefineid],d.[occurTime],d.[confirmation],d.[ConfirmationTime],
  d.[MaintenanceName],d.[MaintenanceProcedure],d.[screen],120)
  from deleted d
  END
  --如果表是删除,则同步更新AlarmsMiddleTbl
  IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
  BEGIN
  INSERT INTO [PHS].[dbo].[AlarmsMiddleTbl]
  SELECT d.[Id],120)
  from deleted d
  END
  IF @@error <> 0
  BEGIN
  RAISERROR('ERROR',16,1)
  rollback transaction
  return
  END

摘自网站:http://it.114study.com/ncre/article414624.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读