Oracle如果要插入外键的值为-1,则插入null

Oracle if value to be inserted in foreign key is -1, insert null instead

我有一个正在读取的 xml 脚本,用于用数据填充我的数据库。 xml 文件中的一个节点没有 idDirector 字段(节点是电影),因此 xml 将 -1 读取为 idDirector,然后我的存储过程尝试将 -1 插入到fk 字段,这使我的数据库返回一个约束错误:director -1 在 Director table 中不存在。我怎样才能让它插入 null 并使我的 fk 字段可为空?

CREATE TABLE Film (
    PRIMARY KEY (idFilm),
    FOREIGN KEY (idDirector) REFERENCES Director
);

谢谢

在我看来 CASE,例如

insert into film (id_film, id_director)
select id_film,
       case when id_director = -1 then null
            else id_director
       end
from ...

有用吗?是:

SQL> create table director (id number primary key);

Table created.

SQL> create table film (id number primary key, id_director number references director);

Table created.

SQL> insert into director values (100);

1 row created.

插入 -1 失败:

SQL> insert into film (id, id_director) values (1, -1);
insert into film (id, id_director) values (1, -1)
*
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.SYS_C0065885) violated - parent key not
found

插入 NULL 有效:

SQL> insert into film (id, id_director) values (1, null);

1 row created.

SQL>