【发布时间】:2017-12-24 16:45:37
【问题描述】:
我的第一个编程程序是 Oracle 数据库研究生证书程序,并且该教科书在某些地方对 Oracle 不友好(它是通用数据库教科书)。我不得不重写 CREATE 表命令,我想出的内容写在下面。
这些表是在我的数据库中创建的,我可以将值插入到 vendor 表中;但是,每次我将值插入产品表时,我都会收到ORA-02291 integrity error。
我意识到在供应商表中找不到父键,但我不知道为什么。我已经在两个表上尝试了列和表约束的组合,但没有任何效果。如果有人可以帮助我建立这种关系,以便我可以练习,那就太好了!
CREATE TABLE VENDOR(
V_CODE INTEGER NOT NULL CONSTRAINT VENDOR_P_K PRIMARY KEY,
V_NAME VARCHAR(35) NOT NULL,
V_CONTACT VARCHAR(25) NOT NULL,
V_AREACODE CHAR(3) NOT NULL,
V_PHONE CHAR(8) NOT NULL,
V_STATE CHAR(2) NOT NULL,
V_ORDER CHAR(1) NOT NULL
);
----------------------------------------------------------------------------
CREATE TABLE PRODUCT(
P_CODE VARCHAR2(10) CONSTRAINT PRODUCT_P_CODE_PK PRIMARY KEY,
P_DESCRIPT VARCHAR2(35) NOT NULL,
P_INDATE DATE NOT NULL,
P_QOH NUMBER NOT NULL,
P_MIN NUMBER NOT NULL,
P_PRICE NUMBER(8,2) NOT NULL,
P_DISCOUNT NUMBER(5,2) NOT NULL,
V_CODE INTEGER NOT NULL,
CONSTRAINT V_CODE_FK FOREIGN KEY (V_CODE) REFERENCES VENDOR (V_CODE)
);
编辑
INSERT INTO VENDOR 2
VALUES (21225, 'Bryson, Inc.', 'Smithson', '615','223-3234','TN','Y');
INSERT INTO VENDOR 2
VALUES (21226,'Superloo, Inc.','Flushing','904','215-8995','FL','N');
INSERT INTO PRODUCT 2
VALUES ('11QER/31','Power painter, 15 psi., 3-nozzle','03-Nov-13',8,5,109.99,0.00,25595);
【问题讨论】:
-
您的插入语句在哪里?请显示minimal reproducible example 请正确格式化您的代码。如果您没有在 VENDOR 中插入第一条记录,那么在尝试插入产品时会出现此错误
-
“我意识到在供应商表中找不到父键,但我不知道为什么” - 你能详细说明一下这个陈述吗?。
-
是的,我首先插入了供应商@OldProgrammer
-
请不要将有关问题的重要信息(例如您的 INSERT 语句)放入 cmets。相反,您应该编辑问题(标签上方有一个可点击的
edit按钮)并将信息直接添加到问题中。这次我做到了。现在 - 您能否也请添加导致错误的 INSERT 语句?那就是INSERT INTO PRODUCT声明。谢谢。 -
养成总是的习惯,包括包含所有 INSERT 语句的字段列表。不包括字段列表将使您的代码从我参与的每个代码审查中被踢出,因为当(不是“如果”)字段添加到 VENDOR 表时,您的语句将立即中断。