Встречается на собеседованиях • сегодня

Как защитить таблицу в базе данных от изменений, даже если есть права на изменение

Для защиты таблицы от изменений можно использовать несколько подходов:

  1. Триггеры - создать BEFORE триггер, который будет отменять операции UPDATE/DELETE:
sql
CREATE TRIGGER prevent_changes
BEFORE UPDATE OR DELETE ON protected_table
FOR EACH ROW
BEGIN
    RAISE EXCEPTION 'This table is read-only';
END;
  1. REVOKE прав - отозвать права на модификацию, оставив только SELECT:
sql
REVOKE INSERT, UPDATE, DELETE ON protected_table FROM user_role;
  1. Представления (VIEW) - предоставить доступ только через представление без возможности модификации:
sql
CREATE VIEW v_protected AS SELECT * FROM protected_table WITH READ ONLY;
  1. Аудит - настроить логирование всех изменений для последующего анализа.

Для максимальной защиты лучше комбинировать эти методы. Триггеры работают даже для пользователей с правами администратора, но могут быть отключены.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы