Oracle嵌套表约束

5
如何在 Oracle 的嵌套表中添加 CHECK 约束?
对象类型:
Depend_t (depname: varchar2(12), gender: char(1), bdate: date, relationship:varchar2(10))

依赖表 Dependtb_t 对应 Depend_t。
Emp_t (eno: number(4), ename: varchar2(15), edept: ref dept_t, salary: number(8,2),

依赖项: dependtb_t)

Dept_t (dno: number(2), dname: varchar2(12), mgr ref emp_t)
Proj_t (pno: number(4), pname: varchar2(15), pdept ref dept_t, budget: number(10,2))
Work_t (wemp: ref emp_t, wproj: ref proj_t, since: date, hours: number(4,2))

表格:

Emp of Emp_t (eno primary key, edept references dept, nested table dependents store as dependent_tb)

Dept of Dept_t (dno primary key, mgr references emp)
Proj of Proj_t (pno primary key, pdept references dept)
Works of Works_t (wemp references emp, wproj references proj)

Emp, Dept,Proj分别包含所有员工、部门和项目的元组。Emp的属性包括员工编号(eno),姓名(ename),所在部门(edept),薪资和存储为嵌套表的依赖关系集合。依赖关系属性只能为‘SPOUSE’‘CHILD’,性别可以是‘M’‘F’bdate记录了依赖关系的出生日期。

如何在嵌套表中添加'M''F'的约束条件?


2
出于好奇,为什么您使用嵌套表而不是具有指向父表的外键的堆表?然后,您可以轻松地将所需的约束添加到子表中。 - Boneist
1个回答

3

来自Oracle 12C SQL参考手册:

检查约束的限制

检查约束受到以下限制:

...

  • 检查约束的条件不能包含以下结构:

    ...

    • 嵌套表列或属性 ...

这是嵌套表在真实数据库中几乎从不使用的许多原因之一,只有在探索Oracle所有功能的课程中才会用到它们!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接