Table 'tableName' 包含具有列 'columnName' 的约束定义,它不在 table Java Derby 中

Table 'tableName' contains a constraint definition with column 'columnName' which is not in the table Java Derby

我正在尝试 运行 一个 SQL 脚本到我在 Java Derby 上创建的数据库:

    CREATE TABLE USUARIO (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
    EMAIL VARCHAR(40) NOT NULL UNIQUE,
    NOMBRES VARCHAR(20) NOT NULL,
    APELLIDOS VARCHAR(20) NOT NULL,
    CONTRASEÑA VARCHAR(20) NOT NULL,
    CEDULA INTEGER,
    TELEFONO INTEGER,

    CONSTRAINT ID_USUARIO_PK PRIMARY KEY (ID) -- Primary Key
);

CREATE TABLE ORGANIZACION (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, -- Id autonumérico
    NOMBRE VARCHAR(20) NOT NULL,

    CONSTRAINT ID_ORGANIZACION_PK PRIMARY KEY (ID),
    CONSTRAINT ID_DIRECCION_ORG_FK FOREIGN KEY (DIRECCION_ORG) REFERENCES DIRECCION_ORG (ID),
    CONSTRAINT ID_TELEFONO_ORG_FK FOREIGN KEY (TELEFONO_ORG) REFERENCES TELEFONO_ORG (ID)
);

CREATE TABLE TELEFONO_ORG (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, -- Id autonumérico
    TELEFONO INTEGER NOT NULL,

    CONSTRAINT ID_TELEFONO_ORG_PK PRIMARY KEY (ID)
);

CREATE TABLE DIRECCION_ORG (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, -- Id autonumérico
    DIRECCION VARCHAR(300) NOT NULL,

    CONSTRAINT ID_DIRECCION_ORG_PK PRIMARY KEY (ID)
);

CREATE TABLE PRODUCTO (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
    RUTA_IMAGEN VARCHAR(400) NOT NULL,
    NOMBRE VARCHAR(20) NOT NULL,
    CANTIDAD INTEGER,
    PRECIO INTEGER,
    COSTO INTEGER,

    CONSTRAINT ID_PRODUCTO_PK PRIMARY KEY (ID), -- Primary Key
    CONSTRAINT ID_ORGANIZACION_FK FOREIGN KEY (ORGANIZACION) REFERENCES ORGANIZACION (ID)
);

但是我收到这个错误:

Table ORGANIZACION contains a constraint definition with column DIRECCION_ORG which is not in the table.

这里有什么问题吗?

DIRECCION_ORGTELEFONO_ORG 列均未在 table ORGANIZACION

中定义

同样的问题出现在tablePRODUCTOORGANIZACION列没有定义

您的 CONSTRAINT 子句有误。

FOREIGN KEY 约束的格式为:

CONSTRAINT {constraint name} FOREIGN KEY ([This_table_column],...) REFERENCES [Other_table] ([Other_table_column], ...).

读这个:https://db.apache.org/derby/docs/10.1/ref/rrefsqlj13590.html#rrefsqlj13590

您正在对外键进行约束,但尚未实际创建包含这些键的列。创建这些列并使约束指向它们(而不是再次使用 table 的名称)。下面显示了 -- 个注释,指示添加它的位置。

CREATE TABLE USUARIO (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
    EMAIL VARCHAR(40) NOT NULL UNIQUE,
    NOMBRES VARCHAR(20) NOT NULL,
    APELLIDOS VARCHAR(20) NOT NULL,
    CONTRASEÑA VARCHAR(20) NOT NULL,
    CEDULA INTEGER,
    TELEFONO INTEGER,

    CONSTRAINT ID_USUARIO_PK PRIMARY KEY (ID) -- Primary Key
);

CREATE TABLE ORGANIZACION (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, -- Id autonumérico
    NOMBRE VARCHAR(20) NOT NULL,
    DIRECCION_ORG_ID INTEGER NOT NULL,   -- ADD THIS and change constraint FK name
    TELEFONO_ORG_ID INTEGER NOT NULL,   -- ADD THIS and change constraint FK name

    CONSTRAINT ID_ORGANIZACION_PK PRIMARY KEY (ID),
    CONSTRAINT ID_DIRECCION_ORG_FK FOREIGN KEY (DIRECCION_ORG_ID) REFERENCES DIRECCION_ORG (ID),
    CONSTRAINT ID_TELEFONO_ORG_FK FOREIGN KEY (TELEFONO_ORG_ID) REFERENCES TELEFONO_ORG (ID)
);

CREATE TABLE TELEFONO_ORG (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, -- Id autonumérico
    TELEFONO INTEGER NOT NULL,

    CONSTRAINT ID_TELEFONO_ORG_PK PRIMARY KEY (ID)
);

CREATE TABLE DIRECCION_ORG (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, -- Id autonumérico
    DIRECCION VARCHAR(300) NOT NULL,

    CONSTRAINT ID_DIRECCION_ORG_PK PRIMARY KEY (ID)
);

CREATE TABLE PRODUCTO (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
    RUTA_IMAGEN VARCHAR(400) NOT NULL,
    NOMBRE VARCHAR(20) NOT NULL,
    CANTIDAD INTEGER,
    PRECIO INTEGER,
    COSTO INTEGER,
    ORGANIZACION_ID INTEGER NOT NULL, --ADD THIS and change constraint FK name

    CONSTRAINT ID_PRODUCTO_PK PRIMARY KEY (ID), -- Primary Key
    CONSTRAINT ID_ORGANIZACION_FK FOREIGN KEY (ORGANIZACION_ID) REFERENCES ORGANIZACION (ID)
);