需求:
有一个字段insert或update时,提交了内容aaa,但我想把aaa替换成bbb保存下来,但又不能改程序,要求比较实时的, 不希望用定时任务。
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
IF OBJECT_ID('trig_t_I') IS NOT NULL DROP TABLE trig_t_I
GO
CREATE TABLE t(
id INT IDENTITY(1,1) PRIMARY KEY,
n NVARCHAR(20)
)
GO
-- =============================================
-- Author: yenange
-- Create date: 2018-12-20
-- Description:
-- =============================================
CREATE TRIGGER trig_t_I
ON dbo.t
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT 1 FROM INSERTED WHERE n='aaa')
BEGIN
UPDATE A
SET n='bbb'
FROM INSERTED AS b INNER JOIN t AS A
ON A.id=b.id
WHERE b.n='aaa'
END
END
GO
SET NOCOUNT ON
INSERT INTO t
SELECT 'aaa'
UNION ALL
SELECT 'bbb'
UNION ALL
SELECT 'ccc'
SELECT * FROM t
/*
id n
----------- --------------------
1 bbb
2 bbb
3 ccc
*/