1. 程式人生 > >如何在插入時,自動修正記錄的內容

如何在插入時,自動修正記錄的內容

需求:

有一個欄位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 t 
		SET n='bbb'
		FROM INSERTED AS b
		WHERE t.id=b.id AND 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
 */