首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server记录上的CheckSum

SQL Server记录上的CheckSum
EN

Stack Overflow用户
提问于 2018-04-06 14:47:36
回答 1查看 308关注 0票数 0

在SQL Server中的每条记录上添加校验和(仅由应用程序更新),以防止和检查记录是否使用外部脚本手动更新,这是不是一个好主意?如果不是,最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-04-06 15:29:48

使用触发器来防止更改(回滚它们)。或者使用它们来审核更改(将更改记录到一个单独的表中)。

代码语言:javascript
复制
-- Add trigger to prevent data changes 
CREATE TRIGGER [active].[myTriggerOfInfinitePower] ON [active].[mySpecialSparkleTable] 
FOR INSERT, UPDATE, DELETE AS 
BEGIN 

  -- Detect inserts 
  IF EXISTS (select * from inserted) AND NOT EXISTS (select * from deleted) 
    BEGIN 
        ROLLBACK TRANSACTION; 
        RAISERROR ('inserts are not allowed on that table', 15, 1); 
        RETURN; 
    END 

  -- Detect deletes 
  IF EXISTS (select * from deleted) AND NOT EXISTS (select * from inserted) 
    BEGIN 
        ROLLBACK TRANSACTION; 
        RAISERROR ('deletes are not allowed on that table', 15, 1); 
        RETURN; 
    END 

  -- Detect updates 
  IF EXISTS (select * from inserted) AND EXISTS (select * from deleted) 
    BEGIN 
        ROLLBACK TRANSACTION; 
        RAISERROR ('updates are not allowed on that table', 15, 1);  
        RETURN; 
    END 

END; 
GO 

来源:use triggers to prevent changes

关于校验和:添加校验和列(a)不会通过SQL脚本(等)“阻止”记录更改。以及(b)运行这样一个脚本的人总是可以更新校验和(理论上-除非你做一些秘密的松鼠散列)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49686970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档