【发布时间】:2015-03-27 07:50:03
【问题描述】:
我的数据库中有 3 个表,即员工、学生和图像
create table employees(id number primary key,name varchar2(100), address varchar2(100));
create table students(id number primary key,name varchar2(100),address varchar2(100));
create table Images (image_id number primary key,employee_id number,student_id number,image_name varchar2(100));
Insert into employees values (1,'asdfasd','asdfasdf');
Insert into employees values (2,'asdfasd','asdfasdf');
Insert into employees values (3,'asdfasd','asdfasdf');
Insert into employees values (4,'asdfasd','asdfasdf');
Insert into employees values (5,'asdfasd','asdfasdf');
Insert into students values (1,'asdfasd','asdfasdf');
Insert into students values (2,'asdfasd','asdfasdf');
Insert into students values (3,'asdfasd','asdfasdf');
Insert into students values (4,'asdfasd','asdfasdf');
Insert into students values (5,'asdfasd','asdfasdf');
Insert into students values (49,'asdfasd','asdfasdf');
Insert into Images(image_id,employee_id,image_name) values (1,5,'adsfasdfasdf');
Insert into Images(image_id,student_id,image_name) values (2,49,'asfasdfasdf');
现在,当在 Images 表中插入一行时,我应该检查employee_id / Student_id 是否存在于employees 表/student 表中,如果找到匹配项,则只需插入,否则不应该。
我想在 images 表上添加两个外键如下:
alter table images add constraint fk_employeeid foreign key(employee_id)
references employees(id);
alter table images add constraint fk_studentsid foreign key(student_id)
references students(id);
但是,如果我这样做。它不允许我插入空值。如何修改我的设计,以便每当我在图像表中插入一行时,它应该是一个雇员 ID 或一个学生 ID。
如果我造成任何混淆,这里是 sql fiddle 的链接,http://www.sqlfiddle.com/#!4/92d24/1/0
【问题讨论】:
-
它不允许我插入空值 不,它肯定允许空值。看我的回答。
-
您在为此触发之前是否厌倦了插入?
标签: oracle oracle11g insert foreign-keys constraints