sql >> Databasteknik >  >> RDS >> Sqlserver

Hur gör man en tabell som skrivskyddad i SQL Server?

Ett enkelt alternativ som skulle blockera uppdatering och infoga på en specifik tabell men ändå tillåta radering:

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

Var medveten om:detta undviker INSERT och UPPDATERINGAR, men tillåter DELETEs.

Om du verkligen behöver en tabell för att verkligen vara läsbar kan du också antingen:

a) placera den i sin egen databas eller
b) placera den i en filgrupp och markera den som skrivskyddad, så här:

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

För mer information om detta ämne, gå hit:

Hur man gör en tabell skrivskyddad i SQL Server



  1. Saknade sekvenser i HSQL för testning

  2. Hur ersätter man icke-numeriska tecken i MySQL?

  3. psql:FATAL:Identifiering misslyckades för användarens postgres

  4. Infoga hela DataTable i databasen på en gång istället för rad för rad?