使用Spring数据/ Hibernate删除:ORA-01407:无法更新为Null

时间:2016-03-10 11:33:43

标签: java spring oracle hibernate

我正尝试使用CRUD Repository

中的deleteAll()方法从我的数据库中删除某个表中的行

当我这样做时,我收到与我的DOG表相关的错误,行DOG_OWNER:

ORA-01407: Cannot update DOG_OWNER to Null

此修复程序只是为了删除此行上的not-null constraint,还是有另一种解决方法?

1 个答案:

答案 0 :(得分:2)

在简化的情况下,FOREIGN KEY不可归,使用ON DELETE SET NULL约束,导致在删除引用密钥后报告错误。

在这种情况下,确实有助于解除对外键的NOT NULL约束。

create table dog_owner 
(id number);
alter table dog_owner add  primary key (id);
insert into dog_owner values (1);

create table dog 
(id number,
dog_owner_id number not null); -- foreign key is not nullable ..
alter table dog add  primary key (id);
alter table dog add  foreign key (dog_owner_id) references dog_owner(id) 
ON DELETE SET NULL; -- but the contrains sets is to null...

insert into dog values (1,1);
commit;

delete from dog_owner where id = 1;

-- SQL-Fehler: ORA-01407: cannot update ("SCHEMA_NAME"."DOG"."DOG_OWNER_ID") to NULL 

alter table dog modify (dog_owner_id number  null);

delete from dog_owner where id = 1;

-- 1 rows deleted