【发布时间】:2016-02-15 11:18:24
【问题描述】:
我在 Windows 7 上使用 SQL Server 2012。
我是 SQL 初学者;我目前在表DeviceStatus 上有这个触发器:
ALTER TRIGGER [dbo].[trigger_insertInStatus]
ON [dbo].[DeviceStatus]
AFTER INSERT
AS
BEGIN
-- Insert statements for trigger here:
INSERT INTO GeneralStatus (DeviceIP, ServiceStatus)
VALUES
( (SELECT DeviceIP FROM INSERTED), (SELECT ServiceStatus FROM INSERTED) );
END
其中DeviceIP 是唯一键。
问题是,很明显,当尝试插入具有DeviceIP 值的记录/行时,它会崩溃 - 意外 - 已经存在于名为 GeneralStatus 的第二个表中...
我应该如何修改/调整上述 SQL 查询以保留现有功能(INSERT INTO...),但还可以在此类中添加ServiceStatus 列更新 DeviceIP 值已存在于GeneralStatus 表中的情况?
编写此代码的最佳方式是什么(高性能且安全)?
【问题讨论】:
标签: sql sql-server triggers insert sql-update