【问题标题】:ORA-02291: integrity constraint (PRUEBA4.AUTO_MARCA_FK) violated - parent key not foundORA-02291: 违反完整性约束 (PRUEBA4.AUTO_MARCA_FK) - 未找到父键
【发布时间】:2018-05-23 21:27:48
【问题描述】:

我最近正在学习这个,我想知道我是否可以帮助自己, 这是我的数据库:

CREATE TABLE MARCA(
COD_MARCA NUMBER(3) CONSTRAINT MARCA_PK PRIMARY KEY,
NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE_MARCA NOT NULL
);

CREATE TABLE AUTO(
COD_AUTO NUMBER(3) CONSTRAINT AUTO_PK PRIMARY KEY,
MODELO VARCHAR2(20) CONSTRAINT NOTNULL_MODELO_AUTO NOT NULL,
AUTO_VERSION VARCHAR2(10) CONSTRAINT NOTNULL_VERSION_AUTO NOT NULL,
COD_MARCA NUMBER(3) CONSTRAINT NOTNULL_COD_MARCA_AUTO NOT NULL,
CONSTRAINT AUTO_MARCA_FK FOREIGN KEY (COD_MARCA) REFERENCES MARCA (COD_MARCA)
);

CREATE TABLE VENTA(
COD_VENTA NUMBER(3) CONSTRAINT VENTA_PK PRIMARY KEY,
COD_VENDEDOR VARCHAR2(4) CONSTRAINT NOTNULL_COD_VND_VNTA NOT NULL,
RUT VARCHAR2(10) CONSTRAINT NOTNULL_RUT_VNTA NOT NULL,
COD_AUTO NUMBER (3) CONSTRAINT NOTNULL_COD_AUTO_VNTA NOT NULL,
COD_COLOR NUMBER(3) CONSTRAINT NOTNULL_COD_COLOR_VNTA NOT NULL,
FECHA DATE CONSTRAINT NOTNULL_FECHA_VENTA NOT NULL,
VALOR NUMBER(6) CONSTRAINT NOTNULL_VALOR_VENTA NOT NULL,
CONSTRAINT VENTA_VENDEDOR_FK FOREIGN KEY (COD_VENDEDOR) REFERENCES VENDEDOR (COD_VENDEDOR),
CONSTRAINT VENTA_CLIENTE_FK FOREIGN KEY (RUT) REFERENCES CLIENTE (RUT),
CONSTRAINT VENTA_AUTO_FK FOREIGN KEY (COD_AUTO) REFERENCES AUTO (COD_AUTO),
CONSTRAINT VENTA_COLOR_FK FOREIGN KEY (COD_COLOR) REFERENCES COLOR (COD_COLOR)
);

插入值

CREATE SEQUENCE SEQ_AUTO
INCREMENT BY 1
START WITH 1;

INSERT INTO AUTO VALUES(SEQ_AUTO.NEXTVAL,'ibiza','16V',1);
INSERT INTO AUTO VALUES(SEQ_AUTO.NEXTVAL,'ibiza','tsi',1);
INSERT INTO AUTO VALUES(SEQ_AUTO.NEXTVAL,'ibiza','tdi',1);

ORA-02291:违反完整性约束 - 未找到父密钥

INSERT INTO AUTO VALUES(SEQ_AUTO.NEXTVAL,'ibiza','16V',1)

抛出以下异常

ORA-02291:违反完整性约束 (PRUEBA4.AUTO_MARCA_FK) - 未找到父密钥。

【问题讨论】:

  • 您似乎没有先在marca 中插入一行...?
  • 没错,首先是“MARCA”表中的数据

标签: sql oracle oracle11g ora-02291


【解决方案1】:
CREATE TABLE MARCA(
COD_MARCA NUMBER(3) CONSTRAINT MARCA_PK PRIMARY KEY,
NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOMBRE_MARCA NOT NULL
);

CREATE TABLE AUTO(
COD_AUTO NUMBER(3) CONSTRAINT AUTO_PK PRIMARY KEY,
MODELO VARCHAR2(20) CONSTRAINT NOTNULL_MODELO_AUTO NOT NULL,
AUTO_VERSION VARCHAR2(10) CONSTRAINT NOTNULL_VERSION_AUTO NOT NULL,
COD_MARCA NUMBER(3) CONSTRAINT NOTNULL_COD_MARCA_AUTO NOT NULL,
CONSTRAINT AUTO_MARCA_FK FOREIGN KEY (COD_MARCA) REFERENCES MARCA (COD_MARCA)
);

CREATE TABLE VENTA(
COD_VENTA NUMBER(3) CONSTRAINT VENTA_PK PRIMARY KEY,
COD_VENDEDOR VARCHAR2(4) CONSTRAINT NOTNULL_COD_VND_VNTA NOT NULL,
RUT VARCHAR2(10) CONSTRAINT NOTNULL_RUT_VNTA NOT NULL,
COD_AUTO NUMBER (3) CONSTRAINT NOTNULL_COD_AUTO_VNTA NOT NULL,
COD_COLOR NUMBER(3) CONSTRAINT NOTNULL_COD_COLOR_VNTA NOT NULL,
FECHA DATE CONSTRAINT NOTNULL_FECHA_VENTA NOT NULL,
VALOR NUMBER(6) CONSTRAINT NOTNULL_VALOR_VENTA NOT NULL,
CONSTRAINT VENTA_VENDEDOR_FK FOREIGN KEY (COD_VENDEDOR) REFERENCES VENDEDOR (COD_VENDEDOR),
CONSTRAINT VENTA_CLIENTE_FK FOREIGN KEY (RUT) REFERENCES CLIENTE (RUT),
CONSTRAINT VENTA_AUTO_FK FOREIGN KEY (COD_AUTO) REFERENCES AUTO (COD_AUTO),
CONSTRAINT VENTA_COLOR_FK FOREIGN KEY (COD_COLOR) REFERENCES COLOR (COD_COLOR)
);

插入值

CREATE SEQUENCE SEQ_MARCA
INCREMENT BY 1
START WITH 1;

INSERT INTO MARCA VALUES(SEQ_MARCA.NEXTVAL,'Seat');
INSERT INTO MARCA VALUES(SEQ_MARCA.NEXTVAL,'Renault');

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 2020-07-19
    • 2018-04-18
    • 2014-06-12
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多