Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come creare una tabella di sola lettura in SQL Server?

Una semplice alternativa che bloccherebbe l'aggiornamento e l'inserimento su una tabella specifica ma consentirà comunque l'eliminazione:

ALTER TABLE mytable WITH NOCHECK ADD CONSTRAINT chk_read_only CHECK( 1 = 0 )

Attenzione:questo evita INSERT e UPDATE, ma consente DELETE.

Se hai davvero bisogno di una tabella per essere veramente di sola lettura, potresti anche:

a) inserirlo nel proprio database oppure
b) inserirlo in un filegroup e contrassegnarlo di sola lettura, ecco come:

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

Per maggiori dettagli su questo argomento, vai qui:

Come creare una tabella di sola lettura in SQL Server