这是我在课程中找到的代码
create type employee_type AS OBJECT
( empno number(4),
ename varchar2(40),
dept_ref REF department_type)
/
create table employee of employee_type
( empno PRIMARY KEY )
/
create type department_type AS OBJECT
( deptno number(2),
dname varchar2(20),
loc varchar(20))
/
create table employee of employee_type
( empno PRIMARY KEY )
/
create table department of department_type
( deptno PRIMARY KEY )
/
alter table employee
add (scope for (dept_ref) is department)
/
我不明白为什么我们需要改变employee表来为department表添加范围,我的意思是dept_ref已经被引用到department_type而department表是由department_type对象组成的,添加范围的参数是什么做的?
答案 0 :(得分:1)
正如documentation中所述,目的是说dept_ref
中的employee
必须特别提及department
,而不是任何其他表可能是department_type
类型。
参见 REF列:示例:
dept
列可以存储对任何表中存储的dept_t
对象的引用。如果您希望将引用限制为仅指向存储在departments
表中的对象,则可以通过在dept
列上添加范围约束来执行此操作,如下所示...
(显然,人们喜欢从员工和部门领域抽取例子)