Я хотел бы добавить ограничение в свою таблицу:
create table asset (
id number(19,0) not null,
name varchar2(255 char),
description varchar2(255 char),
type varchar2(255 char),
height number(10,0),
width number(10,0),
bytes blob,
primary key (id)
);
после сохранения на нем Assets с ID от 0 до 8:
ALTER TABLE ASSET ADD CONSTRAINT check_if_id_bigger_than_eight CHECK (ID > 8)
чтобы избежать дальнейших модификаций строк с идентификаторами от 0 до 8, к сожалению, вышеизложенное не работает, потому что не разрешено иметь данные, которые нарушают ограничения, есть ли простой способ сделать это?
H2 поддерживает только триггеры, написанные на Java. Вы не можете определить их в SQL


Этот триггер может работать (синтаксис сервера sql)
create trigger TR_8
on asset
after insert, update
as
if exists(
select * -- checks if new or modified datum has id between 0 and 8
from inserted
where inserted.id between 0 and 8
)
begin
RAISERROR ('Ids between 0 and 8 must stay untouched', 16, 10); --if so, rollback the transaction giving an error
rollback transaction
end
Спасибо, это на самом деле не работает на H2, вы знаете, как исправить синтаксис для H2?
Извините, я никогда не использовал H2. В любом случае, я предлагаю вам добавить тег H2 к вашему вопросу.
Вам нужно сделать это через триггер. Ограничение касается значений в строке. Это не флаг «да/нет» относительно возможности обновления значений.