PLSQL_触发器重复a有错误
我创建了这个触发器以防止添加重复帐户。但是当我通过插入一个重复的帐户来测试触发器时,我得到了一个错误 违反了唯一约束JL.PK.ACCOUNT 请帮忙PLSQL_触发器重复a有错误,plsql,Plsql,我创建了这个触发器以防止添加重复帐户。但是当我通过插入一个重复的帐户来测试触发器时,我得到了一个错误 违反了唯一约束JL.PK.ACCOUNT 请帮忙 create or replace trigger update_acct# before insert or update on ACCOUNT for each row declare v_cta# NUMBER; begin select count(A#) into v_c
create or replace trigger update_acct#
before insert or update on ACCOUNT
for each row
declare
v_cta# NUMBER;
begin
select count(A#) into v_cta# from account where A#=:new.A#;
if v_cta#>1 then
raise_application_error (-20105, 'DUPLICATE ACCOUNT NUMBER');
end if;
end;
如果出现以下情况,您应该:
--old code
if v_cta#>1 then
raise_application_error (-20105, 'DUPLICATE ACCOUNT NUMBER');
end if;
--new code
if v_cta#>0 then
raise_application_error (-20105, 'DUPLICATE ACCOUNT NUMBER');
end if;
当v_cta等于1时,您的条件将不起作用如果条件:
--old code
if v_cta#>1 then
raise_application_error (-20105, 'DUPLICATE ACCOUNT NUMBER');
end if;
--new code
if v_cta#>0 then
raise_application_error (-20105, 'DUPLICATE ACCOUNT NUMBER');
end if;
当v_cta等于1时,您的条件将不起作用您的触发器没有抛出错误。它甚至没有开火 您没有根据提供的错误发布表定义,但它看起来像define中的列作为主键。尝试插入重复行时,验证PK时引发错误。您不必检查主键是否存在重复项:Oracle保证它是唯一的
如果您触发了触发器,您将得到一个ORA-04091表名正在变异。。。错误不能在行级触发器中引用触发表 您的触发器没有抛出错误。它甚至没有开火 您没有根据提供的错误发布表定义,但它看起来像define中的列作为主键。尝试插入重复行时,验证PK时引发错误。您不必检查主键是否存在重复项:Oracle保证它是唯一的
如果您触发了触发器,您将得到一个ORA-04091表名正在变异。。。错误不能在行级触发器中引用触发表 谢谢你的评论!!我不明白您不能在行级触发器中引用触发表。在插入或更新帐户表时触发该触发器。因此,在该触发器中,您无法从帐户中进行选择,因此insert into table列值有一个例外。。。。甲骨文可以保证;这是单行。谢谢你的评论!!我不明白您不能在行级触发器中引用触发表。在插入或更新帐户表时触发该触发器。因此,在该触发器中,您无法从帐户中进行选择,因此insert into table列值有一个例外。。。。甲骨文可以保证;这是一排。