Каков наилучший способ навсегда пометить запись как доступную только для чтения? - PullRequest
2 голосов
/ 21 апреля 2009

У меня есть приложение Access 2003, которое подключается к блоку SQL Server 2000.

У меня есть таблица, в которой мне нужно заблокировать запись вместе со всеми связанными записями в разных таблицах. Под «блокировкой» я подразумеваю пометить их как доступные только для чтения, чтобы клиенты не могли редактировать эти записи, пока администратор не разблокирует их.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 21 апреля 2009

Скорее всего, не существует "элегантного" способа сделать это на уровне базы данных. Но есть несколько маршрутов, которые вы могли бы сделать.

  1. Добавить «заблокированное» битовое поле в каждую таблицу, а при «блокировании» родительского каскада это значение.
  2. В сочетании с # 1 добавьте триггер при обновлении и удалите, если установлен флаг, вы можете отменить обновление или удалить.

Это почти единственный простой способ применить его на уровне БД, который я могу себе представить.

0 голосов
/ 21 апреля 2009

Просто еще один вариант выкинуть туда:

  • Добавьте столбец last_updated к вашему таблица, которая обновляется при обновлении триггер
  • Создайте таблицу, Locked_Widgets (или что-то еще), которая является просто PK вашей базовой таблицы и столбец last_updated, а весь набор столбцов составляет PK в Locked_Widgets
  • Поместить не каскадный внешний ключ из базовой таблицы в Locked_Widgets

Если кто-либо попытается обновить строку, триггер попытается обновить столбец last_updated, а ограничение внешнего ключа приведет к сбою обновления.

0 голосов
/ 21 апреля 2009

Предполагая, что ваши данные находятся в SQL Server, я бы сначала использовал безопасность SQL Server, если это возможно. Обычно мы не разрешаем доступ к таблицам, а затем контролируем их через SP. SP могут иметь более сложную логику, чтобы определить, должна ли проходить конкретная операция.

Если это не вариант, вы всегда можете использовать триггеры, проверять строки и отклонять обновление или удалять таким образом.

Существует множество способов снять шкуру с этой кошки.

...