在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。