我 有 两 个 表 professor 和 department 。 professor 表 以 dept _ id 作为 外键 , department 表 以 prof _ id 作为 forgin 键 。 我 是 如何 在 不 添加 dept _ id 列 的 情况 下 创建 professor 表 , 然后 创建 以 prof _ id 作为 外键 的 department 表 的 。 现在 , 我 在 这 两 个 表 中 添加 了 数据( professor 表 没有 列 dept _ id ) 。 现在 我 修改 了 professor 表 并 添加 了 dept _ id 作为 外键 , 现在 我 想 在 此 列 中 添加 数据 , 我 应该 使用 什么 sql 查询 ?
create table PROFESSOR( Prof_id varchar2(5) primary key check(length(Prof_id)=5),
Prof_name varchar2(40),
Email varchar2(40) check(Email like '%@%') unique,
Mobile varchar2(40) check(length(Mobile)=10) unique,
Speciality varchar2(40));
create table DEPARTMENT(Dept_id varchar2(40) primary key,
Dname varchar2(40),
Prof_id varchar2(5) check(length(Prof_id)=5) references PROFESSOR(Prof_id) on delete cascade);
insert into PROFESSOR values('prof1','prof.raj','raj@gmail.com','9992214587','blockchain');
insert into PROFESSOR values('prof2','prof.ravi','ravi@gmail.com','9292514787','database');
insert into DEPARTMENT values('11','mca','prof1');
insert into DEPARTMENT values('12','btech','prof2');
alter table PROFESSOR add Dept_id varchar2(40) references PROFESSOR(Prof_id)on delete cascade;
中 的 每 一 个
现在 , 我 想 将 数据 添加 到 表 professor 的 列 Dept _ id 中
update PROFESSOR set Dept_id='11' where Prof_id='prof1';
格式
命令 , 但 它 正在 显示
ORA - 02291 : 违反 了 完整 性 约束 条件 ( SQL_TRUVEWTCOSJUGCBEMBVYVITBK . SYS_C00101381949 ) - 未 找到 父 关键 字 ORA - 06512 :在 " SYS . DBMS _ SQL " 的 第 1721 行
2条答案
按热度按时间31moq8wy1#
当然它失败了;您引用了错误的表(
professor
,而不是department
)。这就是你所做的:
因此,删除该 invalid 约束并创建一个新约束:
现在
update
可以工作了。lbsnaicq2#
您的
ALTER TABLE
DDL有错误。请用途:请参阅db<>fiddle处的示例。