真的只是一个简单的问题..想象一下,你有一个包含数据的表,你需要每月更新一次,然后保存。之后,您的数据库应禁止对受影响的行进行任何其他更改,但保留它们。大概永远不会删除那些行。
我如何以良好的方式实现这一目标?
谢谢!
答案 0 :(得分:1)
从所有普通用户撤消对表的更新/插入/删除
答案 1 :(得分:0)
使用TRIGGER
可以实现这样的复杂约束。但请谨慎使用,因为它们可能会变成维护噩梦。
答案 2 :(得分:0)
使用"查看"作为表格的一部分,除了你提到保护的那一行。也许是动态的观点。所以人们无法改变他们看不到的那一行。
答案 3 :(得分:0)
另一个解决方案:read only filegroups:
ALTER DATABASE Test
MODIFY FILEGROUP [FG2] READ_ONLY;
示例:
CREATE DATABASE Test;
GO
ALTER DATABASE Test ADD FILEGROUP FG2
GO
ALTER DATABASE Test ADD FILE
(
NAME = 'SecondFile',
FILENAME = 'D:\BD\SecondFile.ndf'
) TO FILEGROUP FG2;
GO
CREATE TABLE dbo.MyTable2 (Col1 INT) ON FG2;
INSERT dbo.MyTable2 VALUES (11);
GO
ALTER DATABASE Test
MODIFY FILEGROUP [FG2] READ_ONLY;
GO
INSERT dbo.MyTable2 VALUES (22);
GO
/*
Msg 652, Level 16, State 1, Line 1
The index "" for table "dbo.MyTable2" (RowsetId 72057594060210176) resides on a read-only filegroup ("FG2"), which cannot be modified.
*/