[英]How to make SQL Server 2008 Check Constraint of a table Allow Only Certain characters?
[英]How to make a table Read Only in SQL Server?
我正在更新該表中的一些記錄集,之后我需要將此表只讀。
那么如何在SQL Server中創建一個只讀表?
一個簡單的替代方法,可阻止更新並插入特定表但仍允許刪除:
ALTER TABLE mytable WITH NOCHECK ADD CONSTRAINT chk_read_only CHECK( 1 = 0 )
請注意:這可以避免INSERT和UPDATE,但允許DELETE。
如果你真的需要一張桌子才能真正閱讀,你也可以:
a)將其放入自己的數據庫或
b)將它放在一個文件組上並標記為只讀,這是如何:
USE [master]
GO
ALTER DATABASE [csvtosp] ADD FILEGROUP [READONLYTABLES]
GO
ALTER DATABASE [csvtosp] ADD FILE ( NAME = N'mydb_readonly_tables', FILENAME = N'G:\SQL2005DATA\mydb_readonly_tables.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [READONLYTABLES]
GO
USE csvtosp
GO
DROP TABLE mytable
CREATE TABLE mytable (
somedata char(8000) not null
) ON READONLYTABLES
GO
有關此主題的更多詳細信息,請訪問:
3號可能是最好的做法。 例如,如果您的連接是db_owner,那么觸發器可以被禁用觸發器或者將表移動到另一個文件組。
如果您希望它只讀給普通大眾,但仍希望能夠在以后編輯該表,您可能需要考慮為數據庫創建多個用戶並為該數據庫授予不同的權限 - 理想情況下您應該是無論如何這樣做,並不允許一般公眾訪問alter table,truncate等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.