Oracle11g 创建行数有限的表
我想创建行数有限的表。 例如,如果我们尝试在rownumber大于2.000的表中插入数据,则返回一些错误或其他信息Oracle11g 创建行数有限的表,oracle11g,oracle-sqldeveloper,Oracle11g,Oracle Sqldeveloper,我想创建行数有限的表。 例如,如果我们尝试在rownumber大于2.000的表中插入数据,则返回一些错误或其他信息 如何管理这一点?一种方法是创建一个触发器来检查插入行的数量;例如,假设您有这个表 create table notManyRows(n number) 如果要将行数限制为3,可以添加如下触发器: create or replace trigger notManyRowsTrg after insert on notManyRows declare vCheck numb
如何管理这一点?一种方法是创建一个触发器来检查插入行的数量;例如,假设您有这个表
create table notManyRows(n number)
如果要将行数限制为3,可以添加如下触发器:
create or replace trigger notManyRowsTrg
after insert on notManyRows
declare
vCheck number;
begin
select count(*)
into vCheck
from notManyRows;
--
if vCheck > 3 then
raise_application_error(-20001, 'Too many rows in the table');
end if;
end;
工作原理:
SQL> insert into notManyRows values (1);
1 row created.
SQL> insert into notManyRows values (1);
1 row created.
SQL> insert into notManyRows values (1);
1 row created.
SQL> insert into notManyRows values (1);
insert into notManyRows values (1)
*
ERROR at line 1:
ORA-20001: Too many rows in the table
ORA-06512: at "ALEK.NOTMANYROWSTRG", line 9
ORA-04088: error during execution of trigger 'ALEK.NOTMANYROWSTRG'
SQL>
是否可以创建主键,即从数字1自动递增到2000?这取决于您的Oracle版本。但是,这如何防止插入行?您仍然需要一个触发器来检查PK值是否大于限制;另外,如果我删除1中ID为的所有行。。。19999年?非常感谢。当有人解决它时,它看起来很简单:)Oracle版本是11g。我不认为删除1到19999之间的行会有问题,完全忘记了这一点。我只是问,这可以澄清什么是最好的选择。有更多经验的人可以比我这样的洛奇有更广阔的前景。这就是为什么我要问:)