【发布时间】:2013-11-21 18:40:44
【问题描述】:
我正在 Oracle 中构建一些非常简单的表,但在创建外键时遇到了麻烦。 Equipment 中的 fac_ID 是在 Faculty 中引用 fac_ID 的 FK,但它正在创建错误。
我正在使用 Oracle 11g Express。当我运行“从设备中选择 *”时,它会产生错误“ORA-00942:表或视图不存在”
CREATE TABLE Faculty(
fac_ID VARCHAR(10) NOT NULL,
fac_Street VARCHAR(70) NOT NULL,
fac_City VARCHAR(30) NOT NULL,
fac_PROV VARCHAR(2) NOT NULL,
fac_Phone VARCHAR(12) NOT NULL,
PRIMARY KEY (fac_ID)
);
CREATE TABLE Equipment(
equip_ID VARCHAR(10) NOT NULL,
fac_ID VARCHAR(10) NOT NULL,
equip_Name VARCHAR(50) NOT NULL,
equip_Quantity VARCHAR(3) NOT NULL,
equip_Purchase_Date DATE NOT NULL,
PRIMARY KEY (equip_ID),
CONSTRAINT fac_ID FOREIGN KEY (fac_ID) REFERENCES Faculty(fac_ID)
);
【问题讨论】:
-
您的代码对我有用,您遇到了什么错误?您使用的是哪个版本的 Oracle?尝试将
FOREIGN KEY约束的名称更改为其他名称,例如fac_id_fk。 -
@PrzemyslawKruglej 我正在使用 Oracle 11g Express。当我运行“从设备中选择 *”时,它会产生错误“ORA-00942:表或视图不存在”
-
建表成功了吗?如果您运行此查询:
SELECT * FROM user_objects WHERE object_name = 'EQUIPMENT';它会返回任何内容吗?您是否尝试在以与您在创建表期间登录的用户相同的用户身份登录时运行 select 语句? -
是的,我以同一个人身份登录。但即便如此,“从设备中选择 *”仍然应该产生整个设备表
-
您提到的错误与FK无关。运行 DESC 教员,然后运行 DESC 设备。你得到了什么?
标签: oracle foreign-keys