【问题标题】:Trouble creating foreign key in Oracle create table在 Oracle 创建表中创建外键时遇到问题
【发布时间】: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


【解决方案1】:

我也遇到了以下错误

从第 56 行开始的错误命令 - 删除表 SONICLIVE.Address 清除错误报告 - SQL 错误:ORA-00942:表或视图没有 存在 00942. 00000 - “表或视图不存在” *原因:
*行动:

我所做的是将表名放在双引号内 "Address"

CREATE TABLE "Studio" (
  "ID" NUMBER(5) PRIMARY KEY,
  "NAME" VARCHAR(20),
  "PHONE" VARCHAR(11),
  "ADDRESS_ID" NUMBER,
  "MANAGER_ID" NUMBER,
  CONSTRAINT fk_ADDRESS FOREIGN KEY (ADDRESS_ID) REFERENCES "Address"(ID)
);

它奏效了。我使用 Oracle llg r2 XE 进行本地测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-26
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多