Ограничьте вставки до 6 строк на идентификатор

Я изучаю Hibernate, создавая базовое консольное приложение, используя Oracle в качестве серверной части. У меня есть таблица, в которой, если студент вводит 7-ю запись, ему не должно быть разрешено это делать. Как мне это сделать?

🤔 А знаете ли вы, что...
SQL позволяет создавать ограничения целостности данных, такие как уникальность и внешние ключи.


1
73
2

Ответы:

Помимо триггеров, вы можете создать материализованное представление, а затем проверочное ограничение для таблицы.

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