我试图使用deleteAll()
方法从数据库中删除特定表中的行
当我这样做时,我得到了与我的狗表,行DOG_OWNER有关的错误:
ORA-01407: Cannot update DOG_OWNER to Null
修复仅仅是为了删除该行上的not-null constraint
,还是有其他解决办法?
发布于 2016-03-10 17:23:05
下面是一个简化的场景,它使用FOREIGN KEY
而不是NULLable,并使用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
https://stackoverflow.com/questions/35915314
复制相似问题