如何禁用 h2 中某些 id 的 table 删除?

How to disable delete on table for certain id in h2?

假设我们在 h2 中有 student table 并且每个学生都有 id(主键)。如果 id == 100,是否可以实现触发器(或其他机制)来禁用删除操作。我希望在数据库级别有这样的保护,而不是在应用程序级别。

一个解决方案显然是防止删除或更改值的触发器。

另一种方法是使用外键约束。创建要保留的 table 个 ID 并使用外键引用:

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);

外键定义将要求如果id改变则不能删除该行。而且,添加额外的 ID 很容易——无需更改触发器。