簡體   English   中英

錯誤1215:無法添加外鍵約束SQL語句

[英]Error 1215: Cannot add foreign key constraint SQL Statement

不知道為什么我仍然遇到“錯誤1215”問題,其中它們具有相同的數據類型並且父表位於主鍵中。

子表:

CREATE TABLE `customer_notice_type` (
  `CUSTOMER_NOTICE_TYPE_ID` int(11) NOT NULL AUTO_INCREMENT,
  `CUSTOMER_ID` int(11) NOT NULL,
  `CUSTOMER_NOTICE_TYPE_NAME` varchar(50) NOT NULL,
  `SYSTEM_NOTICE_TYPE_ID` int(11) NOT NULL,
  `STATUS` char(1) NOT NULL,
  `CREATED_BY` varchar(50) NOT NULL,
  `CREATED_DATE` datetime NOT NULL,
  `MODIFIED_BY` varchar(50) DEFAULT NULL,
  `MODIFIED_DATE` datetime DEFAULT NULL,
  PRIMARY KEY (`CUSTOMER_NOTICE_TYPE_ID`),
  KEY `fk_customer_id_customer_notice_type_idx` (`CUSTOMER_ID`),
  CONSTRAINT `fk_customer_id_customer_notice_type` FOREIGN KEY (`CUSTOMER_ID`) REFERENCES `customer` (`CUSTOMER_ID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=494 DEFAULT CHARSET=latin1;

父表:

CREATE TABLE `system_notice_type` (
  `SYSTEM_NOTICE_TYPE_ID` int(11) NOT NULL,
  `SYSTEM_NOTICE_TYPE_NAME` varchar(45) NOT NULL,
  `LINE_OF_BUSINESS_ID` int(11) NOT NULL,
  `STATUS` char(1) NOT NULL,
  PRIMARY KEY (`SYSTEM_NOTICE_TYPE_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;

創建外鍵的SQL腳本:

ALTER TABLE `fexpress`.`customer_notice_type` 
ADD CONSTRAINT `fk_system_notice_type_customer_notice_type` 
FOREIGN KEY (`SYSTEM_NOTICE_TYPE_ID`) 
REFERENCES `fexpress`.`system_notice_type` (`SYSTEM_NOTICE_TYPE_ID`)
ON DELETE CASCADE   ON UPDATE CASCADE;

您有兩個潛在的問題。 首先, alter table語句引用fexpress 這可能是表的正確架構,也可能不是。 因此,這是一個潛在的問題。

第二個實際問題是在子表中定義的約束:

CONSTRAINT `fk_customer_id_customer_notice_type` FOREIGN KEY (`CUSTOMER_ID`) REFERENCES `customer`(`CUSTOMER_ID`) ON DELETE CASCADE ON UPDATE CASCADE

父表尚未定義,因此會生成錯誤。

刪除此行並調整架構名稱將生成工作代碼,如SQL Fiddle所示

暫無
暫無

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

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