簡體   English   中英

MySQL主鍵作為外鍵-約束錯誤

[英]MySQL Primary Key as Foreign Key - Constraint error

假設我有3個表。

CREATE TABLE IF NOT EXISTS GROUP ( 
           ID_GROUP INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
           GROUP VARCHAR(50) NOT NULL, 
           INDEX(GROUP) 
         ) ENGINE=INNODB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;)

CREATE TABLE IF NOT EXISTS USERZ (
            ID CHAR(8) NOT NULL, 
            GROUP VARCHAR(50) NOT NULL, 
            FIRST_NAME VARCHAR(100) NULL DEFAULT NULL , 
            LAST_NAME VARCHAR(100) NULL DEFAULT NULL, 
            DATE_CREATED TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, 
            PASSWORD VARCHAR(8) NULL DEFAULT 'HELLOWORLD', 
            PRIMARY KEY (ID), 
            INDEX (ID), 
            INDEX (GROUP), 
            FOREIGN KEY (GROUP) REFERENCES GROUP (GROUP) 
    ) ENGINE=INNODB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;)


CREATE TABLE IF NOT EXISTS WORKERS (   
          ID CHAR(8) NOT NULL PRIMARY KEY,   
          DATE_START TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,   
          DATE_END TIMESTAMP NULL,   
          FOREIGN KEY (ID) REFERENCES USERZ (ID)   
) ENGINE=INNODB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;)

我在表USERZ中插入數據沒有問題。 但是當涉及到向表WORKERS添加記錄時,我得到了錯誤消息:

mysql.connector.errors.IntegrityError:1452(23000):不能添加或更新子行,外鍵約束失敗( DATABASENAMEWORKERS ,約束WORKERS_ibfk_1外鍵( ID )參考文獻USERZID ))

我肯定知道這與WORKERS主鍵(ID)有關,是指USERZ(ID)。 即使我知道USERZ ID中存在USERZ ID,也不會允許我向WORKERS添加數據。 在下面的示例中,我知道USERZ表中存在“ XXXXXXX1”,因此我想能夠在WORKERS表中添加此用戶。

例如:

"INSERT INTO WORKERS (ID) VALUES ('XXXXXXX1') "

謝謝 !

您也不應將主鍵ID設置為外鍵。 重構成這樣

CREATE TABLE IF NOT EXISTS WORKERS (   
          ID CHAR(8) NOT NULL PRIMARY KEY, 
          USER_ID CHAR(8) NOT NULL,
          DATE_START TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,   
          DATE_END TIMESTAMP NULL,   
          FOREIGN KEY (USER_ID) REFERENCES USERZ (ID)   
) ENGINE=INNODB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;)

然后您的插入內容應該是

INSERT INTO WORKERS (USER_ID) VALUES ('XXXXXXX1')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM