Как отключить удаление по таблице для определенного идентификатора в h2? - PullRequest
0 голосов
/ 04 мая 2020

Предположим, у нас есть таблица student в h2, и у каждого учащегося есть идентификатор (первичный ключ). Можно ли реализовать триггер (или другой механизм) для отключения операции удаления, если id == 100. Я хочу иметь такую ​​защиту на уровне БД, но не на уровне приложения.

1 Ответ

2 голосов
/ 04 мая 2020

Одно решение, очевидно, является триггером, который предотвращает удаление или изменение значения.

Другой метод заключается в использовании ограничения внешнего ключа. Создайте таблицу идентификаторов, которую вы хотите сохранить, и используйте ссылку на внешний ключ:

create table keep_these_students (
    student_id int,
    constraint fk_keep_these_students_student_id foreign key (student_id) references students(id)
);

insert into keep_these_students (student_id)
    values (100);

Определение внешнего ключа потребует, чтобы строка не могла быть удалена при изменении идентификатора. И легко добавить дополнительные идентификаторы - без изменения триггеров.

...