我得到以下順序試圖使用一個表的主鍵作為另一個表的主鍵:
錯誤 3780 (HY000):在外鍵約束“optimization.main - optimization.status”中參考列“optimization_id”和參考列“optimization_id”不兼容。
我也使用主鍵OPTIMIZATION.main作為主鍵,OPTIMIZATION.status因為它是一對一的關系,我認為這比id在每個表中添加一個作為主鍵更容易/更簡單。這些是我執行此操作的唯一表,其他表我也沒有使用外鍵作為主鍵。但是,對于我用來將資料組織在一起的幾個重要表,這樣做似乎更容易/更簡單。
因此,我的問題是:
- 為什么使用提供的代碼會收到錯誤 3780?
- 如果這不是最佳實踐,那么另一種方法是什么?
- 甚至可以使用不同表的主鍵(如
main)作為另一個表的主鍵(如status)?
在
uj5u.com熱心網友回復:
在main表中的ID是int unsigned在status它只是表int這是不兼容的。更改為unsigned int或僅int
CREATE TABLE `OPTIMIZATION`.`main`
(
`optimization_id` int unsigned NOT NULL ,
`optimization_name` varchar(250) NOT NULL ,
`optimization_category` varchar(200) NULL ,
PRIMARY KEY (`optimization_id`)
);
CREATE TABLE `OPTIMIZATION`.`status`
(
`current_status` varchar(25) NULL ,
`discovery_date` datetime NULL ,
`processed_date` datetime NULL ,
`processed_by` varchar(100) NULL ,
`optimization_id` int unsigned NOT NULL ,
PRIMARY KEY (`optimization_id`),
KEY `fkIdx_409` (`optimization_id`),
CONSTRAINT `optimization.main - optimization.status` FOREIGN KEY `fkIdx_409` (`optimization_id`) REFERENCES `OPTIMIZATION`.`main` (`optimization_id`)
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362589.html
上一篇:獲取作業日函式以在星期日回傳整數
下一篇:我無法將資料轉換為所需的形式
