学习场景
数据库约束学习
-- 主表 班级表
create table classinfo(
cid number(4), -- 班级编号
cname varchar2(100), -- 班级名称
cyear number(4), -- 入学年份
clen number(1) -- 学制
);
-- 从表 学生表
create table stuInfo(
stuNo number(10) primary key,
cid number(4),
stuName varchar2(100) not null,
stuCardID varchar2(18),
sex varchar2(4),
stuAge int,
stuTel varchar2(11),
stuAddr varchar2(100)
)
演示过程添加的不同数据
查询两张表信息如下入所示
异常信息
设计外键时后提示一下异常信息
ORA-02270.此列列表的唯关键字或主键不匹配
解决过程
1、从表-学生表stuInfo
添加外键失败提示异常ORA-02270
2、查询表中数据得知从表-学生表stuInfo
中CID列 编号1010 并不存在于主表-classinfo
中,优先delete该数据
3、继续添加外键约束失败,删除两张表中所有数据后,依然失败!!!
4、怀疑主表-classinfo
的主键约束被删掉或禁用掉
select * from user_constraints where table_name = upper('stuInfo');
alter table stuInfo disable constraint SYS_C009447;
5、设置或者启用主键约束,构建成功!
解决思路
1、设计外键关联的时候,从表外键列是否正确引入主表主键列数据
- 主表主键列的值是否存在
- 主外键列数据类型是否一致
2、从表外键列谁否引用的时主表主键列
3、主表主键约束是否误执行关闭、删除等