有谁能帮助我,如果我们可以对oracle表有任何限制,以容纳最多20k条记录,如果有人试图插入超过20k条记录,它应该抛出一个错误。我能想到db触发器,有什么建议吗??
a2mppw5e1#
触发器肯定不适合这样的任务。触发器不应该强制执行完整性。为什么?如果两个用户插入最后一个允许的行,则两个触发器在检查提交的数据时都会成功。为了保持完整性,设计了检查约束。在您的情况下(简化为三行允许),它将是
create table tab(id INT primary key check (id between 1 and 3));insert into tab(id) values(1);insert into tab(id) values(2);insert into tab(id) values(3);insert into tab(id) values(4);ORA-02290: check constraint (REPORTER.SYS_C0011024) violated
create table tab
(id INT primary key check (id between 1 and 3));
insert into tab(id) values(1);
insert into tab(id) values(2);
insert into tab(id) values(3);
insert into tab(id) values(4);
ORA-02290: check constraint (REPORTER.SYS_C0011024) violated
您可以使用序列或标识列添加自动密钥分配。
1条答案
按热度按时间a2mppw5e1#
触发器肯定不适合这样的任务。触发器不应该强制执行完整性。为什么?
如果两个用户插入最后一个允许的行,则两个触发器在检查提交的数据时都会成功。
为了保持完整性,设计了检查约束。
在您的情况下(简化为三行允许),它将是
您可以使用序列或标识列添加自动密钥分配。