在给一个表添加外键时,出现:
1
|
ERROR 1022 (23000): Can't write; duplicate key in table ...
|
产生上述错误的SQL是:
1
2
3
4
5
6
7
8
9
10
|
CREATE TABLE corporate_coupon (
id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
coupon_id INT UNSIGNED NOT NULL ,
page_id INT UNSIGNED NOT NULL ,
corporate_customer_id INT NOT NULL ,
PRIMARY KEY (id),
CONSTRAINT Corporate_Coupon_Id FOREIGN KEY (coupon_id) REFERENCES salesrule_coupon (coupon_id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT Corporate_Page_Id FOREIGN KEY (page_id) REFERENCES corporate_page (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT Corporate_Customer_Id FOREIGN KEY (corporate_customer_id) REFERENCES corporate_customer (id) ON DELETE CASCADE ON UPDATE CASCADE
);
|
后来发现,是 Corporate_Page_Id 这个外键键名和另一个表中的外键键名重复了。。
因为外键键名起名太随意了,没有严格的命名规则导致重复键名出现。
总结:
以后给键命名,必须遵循以下规则:
键类型_表名缩写_键名缩写
例如:
FK_Corporate_Coupon_Page_Id