Связанная таблица только для чтения в доступе к представлению SQL - не работает - PullRequest
0 голосов
/ 09 июля 2020

У меня есть соединение ODB C, созданное в MS Access 365. Оно используется для создания связанной таблицы в Access для представления в моей SQL DB. Я использую логин SQL для аутентификации в SQL DB. Для входа в систему задана роль носителя данных

. Если я внесу какие-либо изменения в запись в связанной таблице в Access, эти изменения также будут внесены в SQL DB.

Как можно ли избежать распространения каких-либо изменений в связанной таблице Access в SQL DB?

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете добавить триггер в представление следующим образом:

CREATE TRIGGER dbo.MySampleView_Trigger_OnInsertOrUpdateOrDelete]
ON dbo.MySampleView
INSTEAD OF INSERT, UPDATE, DELETE
AS
BEGIN
    RAISERROR ('You are not allow to update this view!', 16, 1)    
END

Вы также можете в крайнем случае добавить запрос на объединение, но это несколько некрасиво - вам нужно сопоставить типы столбцов. Например:

ALTER VIEW dbo.MySampleView
as
SELECT col1, col2 FROM dbo.MySampleTable
UNION
SELECT NULL, NULL WHERE 1 =0

Вы также можете создать новую схему. Скажите dboR (только для чтения). Добавьте эту новую схему в базу данных. Затем добавьте схему к пользователю sql / войдите в систему, которую вы используете для этой базы данных. А затем установите для схемы разрешения только для чтения.

Вам необходимо воссоздать представление и выбрать схему только для чтения для этого представления. На стороне клиента доступа я в большинстве случаев удаляю схему по умолчанию «dbo_» и просто использую таблицу (или имя представления) - таким образом, вы можете продолжать использовать то же имя представления, которое использовали в Access.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...