每个ID限制插入6行

时间:2019-01-26 14:36:13

标签: sql oracle hibernate plsql

我正在学习Hibernate使用Oracle作为后端创建一个基本的控制台应用程序。我有一张桌子,如果学生输入第七条记录,则不应允许他这样做。我该怎么做?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您还可以使用简单的触发器(前提是您的表具有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;
/