Есть ли способ защитить все существующие строки от редактирования в таблице SQL? - PullRequest
0 голосов
/ 05 июля 2018

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

В модели программист установил модификаторы доступа так, что только конструктор может устанавливать свойства, но после того, как они установлены, они не могут быть изменены (без отражения).

Как можно внедрить эту же концепцию в строки в таблице?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

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

0 голосов
/ 05 июля 2018

Таблицу можно защитить, отменив права у пользователей базы данных на UPDATE и DELETE. Затем это решение реализуется на уровне пользователя.

Подобная концепция существует во всех основных системах баз данных. Дополнительная информация о разрешениях (Oracle): https://www.techonthenet.com/oracle/grant_revoke.php

Вы также можете использовать триггер перед UPDATE / DELETE, чтобы вызвать ошибку, которая предотвратит изменение также для пользователей, у которых не были отменены разрешения. Дополнительная информация о триггерах (Oracle): https://www.techonthenet.com/oracle/triggers/before_update.php

...