Я изучаю Hibernate, создавая базовое консольное приложение, используя Oracle в качестве серверной части. У меня есть таблица, в которой, если студент вводит 7-ю запись, ему не должно быть разрешено это делать. Как мне это сделать?
🤔 А знаете ли вы, что...
SQL позволяет создавать ограничения целостности данных, такие как уникальность и внешние ключи.
Помимо триггеров, вы можете создать материализованное представление, а затем проверочное ограничение для таблицы.
create materialized view log on test_table;
create materialized view mv_test_table
refresh FAST on COMMIT
ENABLE QUERY REWRITE
as
select id, count(*) cnts
from test_table
group by id;
alter table test_table
add constraint check_userid
check (cnts< 7);
Вы также можете использовать простой триггер (при условии, что в вашей таблице есть столбец ID):
create or replace trigger trg_limit_row
after insert on your_table
for each row
begin
if :new.id >5 then -- assume that you have id in range (0-5) -> 6 rows
execute immediate 'delete from your_table t where t.id = '
|| ':' || 'new_id';
end if;
end;
/