【问题标题】:How can i create a single table from a Given database schema?如何从给定的数据库模式创建单个表?
【发布时间】:2023-03-08 08:49:01
【问题描述】:

表人员本身由主键和外键组成

我一直在用这个查询语句

CREATE TABLE STAFF (
  STAFF_ID number,
  STAFF_NAME varchar(30),
  DEPARTMENT_ID number,
  PRIMARY KEY(STAFF_ID),
  FOREIGN KEY(DEPARTMENT_ID) references DEPARTMENT(DEPARTMENT_ID))
);

我写了这个并且得到一个“对象人员不存在错误”以及一个“丢失或无效选项”。各自的代码是ORA 04043 AND ORA 00922.

这是数据库模式的图像:

【问题讨论】:

  • DEPARTMENT 表是否存在?
  • 顺便说一下,建表语法多了一个括号。
  • 请在代码问题中给出minimal reproducible example--剪切&粘贴&可运行代码;具有期望和实际输出的示例输入(包括逐字错误消息);明确的规范和解释。这包括您可以提供的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)

标签: sql oracle rdbms create-table


【解决方案1】:

如果您引用的是外键,那么在创建子表之前肯定该表必须存在。在您的情况下,部门表必须在您创建员工表之前存在。作为最佳实践,为主键和外键提供约束名称始终是一个好主意。

CREATE TABLE department
(
   department_id             NUMBER,
   department_name           VARCHAR2 (30),
   department_block_number   NUMBER,
   CONSTRAINT department_pk PRIMARY KEY (department_id)
);


CREATE TABLE staff
(
   staff_id        NUMBER,
   staff_name      VARCHAR (30),
   department_id   NUMBER,
   CONSTRAINT staff_pk PRIMARY KEY (staff_id),
   CONSTRAINT department_fk FOREIGN KEY
      (department_id)
       REFERENCES department (department_id)
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多