我在SQL server中工作。我有一个名为task的表,其中有一列是taskname。现在,如果有人将任务名称从"ABC"更新为"DEF",我不希望它被更新,我希望它保持ABC在任务名称列中。我希望大家都清楚我的问题。有人能指导我怎么做吗。
您可以创建一个触发器来防止这种情况发生。
CREATE TRIGGER tg_name_me
ON tbl_name
INSTEAD OF UPDATE
AS
IF EXISTS (
SELECT *
FROM INSERTED I
JOIN DELETED D ON D.PK = I.PK AND ISNULL(D.name,I.name+'.') <> ISNULL(I.name,D.name+'.')
)
RAISERROR('Changes to the TABLENAME tbl_name are NOT allowed', 16,1);
GO
这将创建一个事件,该事件在生成更新语句时自动激活。
- 创建一个以"TaskName"列为主键的新表
- 在此表中插入您当前的TaskName
- 将当前的"TaskName"列定义为引用新表的外键。您可以根据需要定义级联规则