我得到了“完整性约束(SYSTEM。FK_FACILITY)违反了父密钥未找到”错误,尽管主键在上一个表中已经明确定义。
CREATE TABLE Facility (
facNo CHAR(11) NOT NULL,
facName VARCHAR(30) NOT NULL,
CONSTRAINT FacilityPK PRIMARY KEY (facNo)
);
INSERT INTO Facility (facNo, facName) VALUES ('F100', 'Football stadium');
INSERT INTO Facility (facNo, facName) VALUES ('F101', 'Basketball arena');
CREATE TABLE Customer (
custNo CHAR(8) NOT NULL,
custName VARCHAR(30) NOT NULL,
address VARCHAR(50) NOT NULL,
internal CHAR(10) NOT NULL,
city VARCHAR(30) NOT NULL,
zip VARCHAR(10) NOT NULL,
state1 VARCHAR(2) NOT NULL,
contact VARCHAR(50) NOT NULL,
phone VARCHAR(30) NOT NULL,
CONSTRAINT CustomerPk PRIMARY KEY (custNo)
);
INSERT INTO Customer (custNo, custName, address, internal, city, zip, state1, contact, phone) VALUES
('C100', 'Football', 'Box 352200', 'True', 'Boulder', '80309', 'CO', 'Mary Manager', '6857100');
INSERT INTO Customer (custNo, custName, address, internal, city, zip, state1, contact, phone) VALUES
('C101', 'Men''s Basketball', 'Box 352400', 'TRUE' , 'Boulder', '80309', 'CO', 'Sally Supervisor', '5431700');
CREATE TABLE EventReq (
evntNo CHAR(8) NOT NULL,
custNo CHAR(8) NOT NULL,
facNo CHAR(8) NOT NULL,
dateHeld DATE NOT NULL,
dateReq DATE NOT NULL,
dateAuth DATE,
status CHAR(20) NOT NULL,
estCost DECIMAL(8, 2) NOT NULL,
estAudience INTEGER NOT NULL,
budNo CHAR(30),
CONSTRAINT EventReqtPK PRIMARY KEY (evntNo),
CONSTRAINT FK_Facility FOREIGN KEY (facNo) REFERENCES Facility (facNo),
CONSTRAINT FK_Customer FOREIGN KEY (custNo) REFERENCES Customer (custNo)
);
INSERT INTO EventReq (evntNo, custNo, facNo, dateHeld, dateReq, dateAuth, status, estCost, estAudience, budNo)
VALUES ('E100', 'C100', 'F100', TO_DATE('2013-10-25','YYYY-MM-DD'), TO_DATE('2013-06-06','YYYY-MM-DD'), TO_DATE('2013-06-08','YYYY-MM-DD'), 'Approved', 5000.00, 80000, 'B1000');
我的确切错误是
INSERT INTO EventReq (evntNo, custNo, facNo, dateHeld, dateReq, dateAuth, status, estCost, estAudience, budNo)
VALUES ('E100', 'C100', 'F100', TO_DATE('2013-10-25','YYYY-MM-DD'), TO_DATE('2013-06-06','YYYY-MM-DD'), TO_DATE('2013-06-08','YYYY-MM-DD'), 'Approved', 5000.00, 80000, 'B1000')
Error report -
ORA-02291: integrity constraint (SYSTEM.FK_FACILITY) violated - parent key not found
我只想将值添加到表中,但我无法这样做。。。如果有人能帮我,那就太好了!
CHAR
是一个糟糕的选择,除非您知道所有值都是固定长度的。为什么?因为Oracle right使用空格填充这些值,最多可达最大列长度。
这就是你所做的:
SQL> desc facility;
Name Null? Type
----------------------------------------- -------- ----------------------------
FACNO NOT NULL CHAR(11) --> 11 characters
FACNAME NOT NULL VARCHAR2(30)
SQL> select facno, length(facno) lenfac, 'x' || facno ||'x' xfac from facility;
FACNO LENFAC XFAC
----------- ---------- -------------
F100 11 xF100 x
F101 11 xF101 x
-------
1234567 spaces
SQL>
看见
F100
F100
7个空格,总共11个字符在插入eventreq
表时,这不会产生问题,但是-您说过它在facno
列中接受11个字符:
SQL> desc eventreq
Name Null? Type
----------------------------------------- -------- ----------------------------
EVNTNO NOT NULL CHAR(8)
CUSTNO NOT NULL CHAR(8)
FACNO NOT NULL CHAR(8) --> 8 characters
DATEHELD NOT NULL DATE
DATEREQ NOT NULL DATE
DATEAUTH DATE
STATUS NOT NULL CHAR(20)
ESTCOST NOT NULL NUMBER(8,2)
ESTAUDIENCE NOT NULL NUMBER(38)
BUDNO CHAR(30)
SQL>
这意味着-当您在eventreq
表中插入一行时,facno=F100
用空格右键填充,最大列长为8个字符(即F100
4个空格)。
比较:
facility - facno char(11)
eventreq - facno char(8)
F100右键填充为8个字符不同于F100右键填充为11个字符,这就是为什么Oracle说它找不到匹配的父密钥。
怎么办?
facno
表中的列为8个字符
- 或者将
eventreq
中的那一栏放大到11个字符
例如,如果两列都是CHAR(8)
:
SQL> desc facility
Name Null? Type
----------------------------------------- -------- ----------------------------
FACNO NOT NULL CHAR(8)
FACNAME NOT NULL VARCHAR2(30)
SQL> select * From facility;
FACNO FACNAME
-------- ------------------------------
F100 Football stadium
SQL> desc eventreq;
Name Null? Type
----------------------------------------- -------- ----------------------------
EVNTNO NOT NULL CHAR(8)
CUSTNO NOT NULL CHAR(8)
FACNO NOT NULL CHAR(8)
DATEHELD NOT NULL DATE
DATEREQ NOT NULL DATE
DATEAUTH DATE
STATUS NOT NULL CHAR(20)
ESTCOST NOT NULL NUMBER(8,2)
ESTAUDIENCE NOT NULL NUMBER(38)
BUDNO CHAR(30)
SQL> INSERT INTO EventReq (evntNo, custNo, facNo, dateHeld, dateReq, dateAuth, status, estCost, estAudience, budNo)
2 VALUES ('E100', 'C100', 'F100', TO_DATE('2013-10-25','YYYY-MM-DD'), TO_DATE('2013-06-06','YYYY-MM-DD'), TO_DATE('2013-06-08','YYYY-MM-DD'), 'Appr
oved', 5000.00, 80000, 'B1000');
1 row created.
SQL>
它起作用了。
最后,一个巨大的错误:
系统FK_设施
除了数据库管理之外,不要使用SYSTEM
(也不要使用SYS
)用户。它们不应该被用于像你这样的目的。
将实体插入数据库时遇到问题。我正在使用HibernateJPA。 我有表提醒和提醒行动和每个提醒将保持当前状态的提醒行动(即。OneToOne)和交易结束每个提醒将有许多提醒操作(具有不同的状态)。 在saveOrUpdate期间,hibernate从DB获取提醒和提醒操作的顺序 但是在flush()期间,Hibernate尝试首先插入ReminderAction,并且由于ReminderActi
SQL数据库代码: 大家好!我做了一系列的桌子,我想我做的每件事都是正确的。除了位置表之外,我在所有表上输入了输入值,没有任何问题。 这就是给我的错误。 第1行错误:ORA-02291:违反完整性约束(ASSIGNMENT.FK_TENANT)-未找到父密钥。 任何帮助和提示将不胜感激。谢谢! 固定的
所以这里是我的数据库: 插入表格: 批次表不断出现的错误是:ORA-02290:违反了检查约束(EJAY.batches\u DATE\u CHK) 学生表出现的错误是:ORA-02291:违反完整性约束-未找到父键 我感到困惑的是,它只显示在表格中的一些行。教职员工和课程都很好,只有这两个。如果答案很明显,我道歉,我是初学者。请帮帮忙
问题内容: 嗨,我正在Oracle SQL开发人员中开发数据库,试图从另一个表访问foriegn键。我目前正在使用以下CREATE语句创建的ItemOrdered表 如您所见,我具有以下前键Ords和BeltID。 现在,当我尝试运行以下语句时 它给了我以下错误 违反-找不到父密钥02291。00000-“违反完整性约束(%s。%s)-找不到父密钥” 如果需要,我已经提供了Ords CREAT
我试图为和创建会话,这两个表都与相同的外键关联到登录表-但是当我为创建种子时,我得到了错误,在我的另一个问题在这个链接中,我没有以最好的方式解释,但得到了一些关于使用(党-角色-关系模型)和这段代码下面他更多的想法有关已解决的问题链接 创建表和主键 创建表和主键 创建表以及主键和外键 使用表为管理员创建会话的过程: 使用表为用户创建会话的过程: 创建管理会话时,我收到一个错误 我做错了什么?
有人能帮我吗?我已经创建了我所有的表和insert语句,但是我得到了这个错误。 这是我试图将数据插入的表: 这是我的插入声明: 错误: “违反了完整性约束(%s.%s)-未找到父项”(SQL Developer) 完整性约束(MS166.FK_SPECIES_ID)被侵犯-未找到父密钥(SQLPlus) 先谢谢你。