我正尝试使用CRUD Repository
中的deleteAll()
方法从我的数据库中删除某个表中的行
当我这样做时,我收到与我的DOG表相关的错误,行DOG_OWNER:
ORA-01407: Cannot update DOG_OWNER to Null
此修复程序只是为了删除此行上的not-null constraint
,还是有另一种解决方法?
答案 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