【发布时间】:2010-12-14 16:07:23
【问题描述】:
我正在研究数据库,目前正在从事一个对象关系数据库项目,我遇到了一个关于对象表中可能的约束数量的小问题。我正在使用 Hector Garcia-Molina(和其他作者)的“数据库系统:全书”作为参考,并且有一个像这样的通用 SQL 示例:
CREATE TYPE StarType AS (
name CHAR(30),
address AddressType,
bestMovie REF(MovieType) SCOPE Movies
);
现在,我的项目中有一种类似的类型,因为它还使用对类型中的另一种类型的引用,但是在其中放置引用的子句不包括 Oracle 中的 SCOPE(至少我没有t 在文档中找到它并输出错误)。所以我有这样的类型:
CREATE OR REPLACE TYPE "ApplicationType" AS OBJECT (
"person" REF "PersonType",
"competition" REF "CompetitionType",
"dateApplied" DATE
);
/
...这行得通。但是当我想约束 REF 列时,我只能约束一个,如下所示:
CREATE TABLE "Applications" OF "ApplicationType" (
"person" SCOPE IS "People" /* or "competition" SCOPE IS "Competitions" */
)
OBJECT IDENTIFIER IS SYSTEM GENERATED;
有没有办法对两个 REF 列进行约束?
【问题讨论】:
-
两者都尝试会发生什么?您收到什么错误消息?
-
我收到“ORA-00904: : invalid identifier”错误。但是当我单独使用其中任何一个约束时,表格会正常创建。
标签: oracle scope types constraints ref