我目前正在进行数据库练习,但由于出现外键错误,我在输入数据时出现问题。
以下是我的成功列表
CREATE TABLE EMPLOYEE
(
FNAME VARCHAR2(15) NOT NULL,
MINIT CHAR,LNAME VARCHAR2(15) NOT NULL,
SSN CHAR(9) NOT NULL,
BDATE DATE,
ADDRESS VARCHAR2(30),
SEX CHAR(1),
SALARY NUMBER(10,2),
SUPER_SSN CHAR(9),
DNO NUMBER NOT NULL,
CONSTRAINT EMPPK PRIMARY KEY (SSN) DISABLE,
CONSTRAINT EMPSUPERFK FOREIGN KEY (SUPER_SSN) REFERENCES EMPLOYEE(SSN) DISABLE
);
表创建成功
CREATE TABLE DEPARTMENT
(
DNAME VARCHAR2(15) NOT NULL,
DNUMBER NUMBER NOT NULL,
MGR_SSN CHAR(9) NOT NULL,
MGR_START_DATE DATE,
CONSTRAINT DEPTPK PRIMARY KEY (DNUMBER) DISABLE,
CONSTRAINT DEPTMGRFK FOREIGN KEY (MGR_SSN) REFERENCES EMPLOYEE(SSN) DISABLE
);
表创建成功
ALTER TABLE DEPARTMENT ENABLE constraint DEPTPK;
表格改变成功
alter table EMPLOYEE
add constraint fk_d_num
FOREIGN KEY (DNO) references DEPARTMENT (DNUMBER);
表格改变成功
select distinct(TABLE_NAME), constraint_name, constraint_type, status
from all_constraints
where TABLE_NAME in('EMPLOYEE', 'DEPARTMENT');
成功显示包含状态和所有
的表格现在是时候进行数据插入了
我使用了文档中的命令
insert into EMPLOYEE
values ('Jonn', 'B', 'Smith','123456789', '09-FEB-1965', '731 Fondren, Houston, TX','M', 30000, '333445555', 5)
我得到的错误状态
从命令行中的第1行开始出错 -
插入EMPLOYEE值(' Jonn',' B',' Smith',' 123456789',' 09-FEB-1965& #39;,' 731 Fondren,Houston,TX',' M',30000,' 333445555',5)
错误报告
SQL错误:ORA-02291:违反了完整性约束(PA96.FK_D_NUM) - 未找到父密钥
02291. 00000 - "违反完整性约束(%s。%s) - 未找到父键"
原因:外键值没有匹配的主键值 操作:删除外键或添加匹配的主键。
好的,好像我需要先使用department表。仍然会遇到同样的问题
我得出结论,我需要引用我插入的每个数据。
我给出的示例查询提示是:
INSERT INTO Employee (Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno)
VALUES ('Franklin', 'T', 'Wong', 333445555, '1955-12-08', '638 Voss, Houston, TX', M, 40000, 888665555, 5);
我尝试过的部门表仍然失败了:
INSERT INTO Department (Dname, Dnumber, Mgr_ssn, Mgr_start_date)
VALUES ('Research', 5, 333445555, To_date('1988-05-22', ‘YYYY-MM-DD’));
我仍然失败了。我该如何解决这个问题。日期格式是我需要的部门表和员工表,但我一直都是失败。
请有人帮忙解决这个问题。我需要将这些加载到
下面INSERT INTO Employee (Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno)
VALUES ('Jonn', 'B', 'Smith', 123456789, '1965-02-09', '731 Fondren, Houston, TX', M, 30000, 333445555, 5)
进入Employee
表
和
INSERT INTO Department (Dname, Dnumber, Mgr_ssn, Mgr_start_date)
VALUES ('Research', 5, 333445555, '1988-05-22')
进入Department
表。
使用Oracle。
谢谢。
答案 0 :(得分:1)
就像您注意到需要在员工面前插入部门:
INSERT INTO Department (Dname, Dnumber, Mgr_ssn, Mgr_start_date)
VALUES ('Research', 5, 333445555, To_date('1988-05-22', 'YYYY-MM-DD'));
INSERT INTO EMPLOYEE VALUES
('Jonn', 'B', 'Smith','123456789', '09-FEB-1965', '731 Fondren, Houston, TX','M', 30000, '333445555', 5);
插入部门的问题是此部分To_date('1988-05-22', ‘YYYY-MM-DD’)
包含无效字符(日期格式文字周围的引号)。它应该像上面一样。