Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como tornar uma tabela somente leitura no SQL Server?


Uma alternativa simples que bloquearia a atualização e a inserção em uma tabela específica, mas ainda permitindo a exclusão:
ALTER TABLE mytable WITH NOCHECK ADD CONSTRAINT chk_read_only CHECK( 1 = 0 )

Atenção:isso evita INSERTs e UPDATEs, mas permite DELETEs.

Se você realmente precisa de uma tabela para ser verdadeiramente somente leitura, você também pode:

a) coloque-o em seu próprio banco de dados ou
b) coloque-o em um grupo de arquivos e marque como somente leitura, veja como:
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

Para mais detalhes sobre este assunto, acesse aqui:

Como tornar uma tabela somente leitura no SQL Server