新建一个表实现添加数据,数据不重复,。判断两个字段是否存在,如果存在,就修改对应字段,如果不存在就新增数据。
测试表格Test如下:

新建触发器如图:

触发程式如下:
USE [Test]
GO
/****** Object: Trigger [dbo].[TRIGGER11] Script Date: 10/16/2024 18:16:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TRIGGER11]
ON [dbo].[Test]
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
-- 遍历插入操作中的所有行
DECLARE @id INT, @column1 NVARCHAR(100), @column2 NVARCHAR(100);
SELECT @id = inserted.id, @column1 = inserted.name,@column2 = inserted.uptime
FROM inserted;
-- 检查主键是否已存在
IF EXISTS (SELECT 1 FROM Test WHERE id = @id and name =@column1)
BEGIN
-- 如果存在,则更新记录
UPDATE Test
SET uptime = @column2
WHERE id = @id and name =@column1;
END
ELSE
BEGIN
-- 如果不存在,则插入新记录
INSERT INTO Test (id, name,uptime)
VALUES (@id, @column1,@column2);
END
END;
GO
执行以下语句:
INSERT INTO Test (id , name,uptime)
VALUES ('11', '12',GETDATE());
select * from Test
select TOP 1 name from Test ORDER BY uptime DESC;
以下结果如下:

说明:执行上面的新增语句,重复执行,只会改变上传时间,如果id和name改变,会新增一条数据。
2037

被折叠的 条评论
为什么被折叠?



