gpt4 book ai didi

sql-server - TSQL 触发器而不是插入

转载 作者:行者123 更新时间:2023-12-05 09:19:36 24 4
gpt4 key购买 nike

在某个表中插入后,我需要替换其中一个列值(如果它与禁止值匹配)。

例子:

INSERT INTO [dbo].[TEST_A]
([COL_A]
,[COL_B])
VALUES
('TEST'
,'TEST1')

TEST1 是禁止值,我想将其替换为“BANNED”。

这是我写的触发器,但它似乎工作正常:

CREATE TRIGGER [dbo].[TEST_NAME_INS] ON [dbo].[TEST_A]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO TEST_A
(COL_A
,COL_B)
SELECT
COL_A
,REPLACE(COL_B, 'TEST1', 'BANNED')
FROM inserted
WHERE INSERTED.COL_B IN ('TEST1')

错误是,如果我在 COL_B 中插入不同的值,则不会插入任何行。

你能给我一个解决方案吗?

提前致谢

最佳答案

如果您的值多于您想在 case 语句中放入的值,您可以尝试使用一个表来存储禁用词和它们的替换词。然后在插入中加入它,例如:

CREATE TRIGGER [dbo].[TEST_NAME_INS] ON [dbo].[TEST_A]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO TEST_A
(COL_A
,COL_B)
SELECT
COL_A
,CASE WHEN b.banned is null then i.col_b
ELSE b.replacement
END
FROM inserted i
LEFT JOIN Banned b on i.col_B = b.banned

关于sql-server - TSQL 触发器而不是插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40132550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com