Java 如何将ID信息从一个表传输到另一个表?
我使用SQL已经有一段时间了,我创建了三个关于employee数据库和admin数据库的数据库表。admin表仅在员工为admin时获取员工信息。我使用循环语句来控制注册是否说用户是admin,然后将信息存储在两个表中。然而,当它将信息从员工复制/传输到管理数据库时,我不断在员工ID中获取空值。我以前创建过几个数据库,并设法在两个或多个数据库之间创建了链接,但对于这一个,我无法理解错误以及它在管理数据库中存储空值的原因。代码运行并创建数据库,但是,我在EMP_ID部分遇到以下错误:Java 如何将ID信息从一个表传输到另一个表?,java,mysql,sql,database,netbeans,Java,Mysql,Sql,Database,Netbeans,我使用SQL已经有一段时间了,我创建了三个关于employee数据库和admin数据库的数据库表。admin表仅在员工为admin时获取员工信息。我使用循环语句来控制注册是否说用户是admin,然后将信息存储在两个表中。然而,当它将信息从员工复制/传输到管理数据库时,我不断在员工ID中获取空值。我以前创建过几个数据库,并设法在两个或多个数据库之间创建了链接,但对于这一个,我无法理解错误以及它在管理数据库中存储空值的原因。代码运行并创建数据库,但是,我在EMP_ID部分遇到以下错误: [Excep
[Exception, Error code 30,000, SQLState X0Y44] Constraint 'SQL210603141144600' is invalid: there is no unique or primary key constraint on table '"APP"."ADMINDB"' that matches the number and types of the columns in the foreign key.
Line 38, column 1
请参阅下面的代码:
-- CREATING TABLES:
-- CREATING EMPLOYEE DATABASE TABLE:
CREATE TABLE APP.EMPDB(
EMP_ID INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
EMAIL VARCHAR(255) UNIQUE,
PASSWORD VARCHAR(255),
FIRSTNAME VARCHAR(255),
LASTNAME VARCHAR(255),
GENDER CHAR(6),
DATEOFBIRTH DATE,
OCCUPATION VARCHAR(255),
PHONENUMBER VARCHAR(255));
-- CREATING ADMIN DATABASE TABLE:
CREATE TABLE APP.ADMINDB(
ADMIN_ID INT GENERATED ALWAYS AS IDENTITY,
EMAIL VARCHAR(255),
CONSTRAINT ADMIN_ID PRIMARY KEY (ADMIN_ID,EMAIL),
PASSWORD VARCHAR(255),
FIRSTNAME VARCHAR(255),
LASTNAME VARCHAR(255),
JOBPOSITION VARCHAR(255),
EMP_ID INT);
-- INDEXING AND REFERENCING:
-- EMPLOYEE DATABASE TABLE:
-- ALTER TABLE APP.EMPDB ADD FOREIGN KEY (EMAIL) REFERENCES APP.ADMINDB(EMAIL);
CREATE INDEX EMAIL ON APP.EMPDB(EMAIL);
CREATE INDEX EMP_ID ON APP.EMPDB(EMP_ID);
-- ADMIN DATABASE TABLE:
ALTER TABLE APP.ADMINDB ADD FOREIGN KEY (EMP_ID) REFERENCES APP.EMPDB(EMP_ID);
CREATE INDEX EMP_ID ON APP.ADMINDB (EMP_ID);
ALTER TABLE APP.ADMINDB ADD FOREIGN KEY (EMAIL) REFERENCES APP.EMPDB(EMAIL);
INSERT INTO APP.ADMINDB (EMP_ID, EMAIL)
SELECT EMP_ID, EMAIL FROM APP.EMPDB;
编辑1:
我将代码修改为以下内容:
-- CREATING TABLES:
-- CREATING EMPLOYEE DATABASE TABLE:
CREATE TABLE APP.EMPDB(
EMP_ID INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
EMAIL VARCHAR(255),
PASSWORD VARCHAR(255),
FIRSTNAME VARCHAR(255),
LASTNAME VARCHAR(255),
GENDER CHAR(6),
DATEOFBIRTH DATE,
OCCUPATION VARCHAR(255),
PHONENUMBER VARCHAR(255),
ADMIN_ID INT);
-- CREATING ADMIN DATABASE TABLE:
CREATE TABLE APP.ADMINDB(
ADMIN_ID INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
EMAIL VARCHAR(255),
-- EMP_ID INT UNIQUE,
-- CONSTRAINT ADMIN_ID (ADMIN_ID,EMAIL),
PASSWORD VARCHAR(255),
FIRSTNAME VARCHAR(255),
LASTNAME VARCHAR(255),
JOBPOSITION VARCHAR(255),
EMP_ID INT);
-- INDEXING AND REFERENCING:
-- EMPLOYEE DATABASE TABLE:
-- ALTER TABLE APP.EMPDB ADD FOREIGN KEY (EMAIL) REFERENCES APP.ADMINDB(EMAIL);
CREATE INDEX EMAIL ON APP.EMPDB(EMAIL);
-- ALTER TABLE APP.EMPDB ADD CONSTRAINT EMP_ID FOREIGN KEY (EMP_ID) REFERENCES APP.ADMINDB(EMP_ID);
CREATE INDEX EMP_ID ON APP.EMPDB(EMP_ID);
ALTER TABLE APP.EMPDB ADD CONSTRAINT FK_EMPAD_ID FOREIGN KEY (ADMIN_ID) REFERENCES APP.ADMINDB(ADMIN_ID);
CREATE INDEX ADMIN_ID ON APP.ADMINDB (ADMIN_ID);
INSERT INTO APP.EMPDB (ADMIN_ID)
SELECT ADMIN_ID FROM APP.ADMINDB;
-- ADMIN DATABASE TABLE:
ALTER TABLE APP.ADMINDB ADD CONSTRAINT FK_ADEMP_ID FOREIGN KEY (EMP_ID) REFERENCES APP.EMPDB(EMP_ID);
CREATE INDEX EMP_ID ON APP.ADMINDB (EMP_ID);
INSERT INTO APP.ADMINDB (EMP_ID)
SELECT EMP_ID FROM APP.EMPDB;
没有错误,但是,我一直在其他数据库中获取每个ADMIN_ID和EMP_ID中的空值。为什么它不能将数据链接在一起