ORA-02291: 违反完整约束条件 (BEN.SYS_C005646)求解释
create table user_table(userID varchar2(10) primary key ,userName
varchar2(15) not null,userPwd varchar2(10) not null)----用户表
create table roler(roNo varchar2(10) constraint ro_Pk primary key,roName
varchar2(15) not null);
create table user_ro(us_ro varchar2(10) constraint ur_Pk primary
key,userID varchar2(10) references user_table(userID),roNo varchar2(10)
references roler(roNo));-----用户角色表
现在我建个存储过程来插入数据:
create sequence auto_id
start with 1 maxvalue 100000
increment by 1;
drop procedure insert_hd
--创建存储过程
create or replace procedure insert_hd
( userID user_table.userID%type,
roNo roler.rono%type
)
as
id_value number;
id_len number;
vid char(10);
begin
/*for v in 1..n*/
loop
select (auto_id.nextval) into id_value from dual;--获得自动生成的序号
id_len:=length(id_value); -- 判断自动生成的序号的长度,
-- dbms_output.put_line(id_value);
case(id_len) --依次来决定序号前增加的0的个数
when 1 then vid:='ur00000'||id_value;
when 2 then vid:='ur0000'||id_value;
when 3 then vid:='ur000'||id_value;
when 4 then vid:='ur00'||id_value;
when 5 then vid:='ur0'||id_value;
when 6 then vid:='ur'||id_value;
end case;
--- dbms_output.put_line(vid);
insert into user_ro
values(vid,userID,roNo);
exit when id_value>=1;
end loop;
end;
commit;
在命令窗口 里面调用存储过程:
SQL> execute insert_hd('u000001','r000003');
之后就报错了:ORA-02291: 违反完整约束条件 (BEN.SYS_C005646) - 未找到父项关键字
ORA-06512: 在 "BEN.INSERT_HD", line 24
ORA-06512: 在 line 2
------解决方案--------------------变量名和列名相同了。
------解决方案--------------------你是不是有外键,检查下外键约束
http://topic.csdn.net/u/20110222/13/747d2675-3670-459c-90f1-2b447123b128.html?64887
这还有个是关于 ORA-06512 问题的