Мы не можем создать таблицу только для чтения напрямую, Azure SQL / Управляемый экземпляр не имеет этой функции. Но есть много способов добиться этого.
Самый простой способ - создать INSTEAD OF Trigger
, чтобы сделать таблицу доступной только для чтения.
В таблице также можно определить INSTEAD OF TRIGGER
. ограничить манипулирование данными пользователями.
Вот пример кода:
--Create sample table
CREATE TABLE FinancialTargetsForTrigger
(
ID int IDENTITY(1,1),
YearVal int,
QuarterVal int,
TargetVal int
)
--populate table with sample data
INSERT FinancialTargetsForTrigger
VALUES (2014,1,1789),
(2014,2,3000),
(2014,3,1100),
(2014,4,2340),
(2015,1,990),
(2015,2,3420),
(2015,3,2333),
(2015,4,1123)
--create the INSTEAD OF Trigger to make table read only
CREATE TRIGGER trg_FinancialTargetsForTrigger
ON FinancialTargetsForTrigger
INSTEAD OF INSERT,UPDATE,DELETE
AS
BEGIN
RAISERROR ('This table is read only and cant be modified',16,1)
END
Я проверил этот код в своей базе данных Azure SQL, и он хорошо работает.
Для получения дополнительной информации вы можете сослаться на этот документ Microsoft Советы SQLServer: Как сделать таблицу доступной только для чтения в базе данных . Это дает нам много способов.
Надеюсь, это поможет