将数据库还原到旧数据

时间:2018-07-31 07:56:06

标签: sql sql-server

我正在SQL Server中工作。我有一个名为task的表,其中有一个名为taskname的列。现在,如果有人将任务名称从“ ABC”更新为“ DEF”,我不想对其进行更新,我希望它在任务名称列中保持ABC。我希望我的问题对所有人都清楚。有人可以指导我如何做到这一点。

2 个答案:

答案 0 :(得分:0)

您可以创建一个防止这种情况的触发器。

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

这将创建一个事件,该事件将在生成更新语句时自动激活。

答案 1 :(得分:0)

  • 创建一个新表,该表具有“ TaskName”列作为主键。
  • 将当前的TaskName插入此表。
  • 将当前的“ TaskName”列定义为引用新表的外键。您可以根据需要定义级联规则。