2013-05-07 56 views
0

是否可以更改鍵/外鍵的屬性(不刪除並重新創建它們)?更改mysql中的外鍵屬性

我有以下結構:

CREATE TABLE `articles` (
.. 
`LKZ` smallint(3) NOT NULL, 
`FID` int(4) NOT NULL, 
.. 
) ; 
CREATE TABLE `firm` (
`LKZ` smallint(3) NOT NULL, 
`FID` int(4) NOT NULL, 
`Name` text NOT NULL, 
PRIMARY KEY (`LKZ`,`FID`), 
KEY `FID` (`FID`) 
); 
ALTER TABLE `firm` 
ADD CONSTRAINT `firm_ibfk_1` FOREIGN KEY (`LKZ`) REFERENCES `articles` (`LKZ`) ON DELETE NO ACTION, 
ADD CONSTRAINT `firm_ibfk_2` FOREIGN KEY (`FID`) REFERENCES `articles` (`FID`); 

我想要的屬性UNSIGNED ZEROFILL添加到田間地頭FIDLKZ

ALTER TABLE `articles` CHANGE `LKZ` `LKZ` SMALLINT(3) UNSIGNED ZEROFILL NOT NULL, CHANGE `FID` `FID` INT(4) UNSIGNED ZEROFILL NOT NULL; 
ALTER TABLE `firm` CHANGE `LKZ` `LKZ` SMALLINT(3) UNSIGNED ZEROFILL NOT NULL, CHANGE `FID` `FID` INT(4) UNSIGNED ZEROFILL NOT NULL 

但即使收到以下錯誤兩個表:

#1025 - Error on rename of '.\pindex\#sql-3eec4_ef' to '.\pindex\articles' (errno: 150) 

回答

0

看看到你的外鍵。可能還有另外一個帶有外鍵的表引用你正在嘗試改變的主鍵。

如果還應該嘗試找出哪個表導致錯誤。爲此,您可以運行SHOW ENGINE INNODB STATUS,然後在STATUS列中查看「最新的外鍵錯誤」部分。

請記住,外鍵名稱是全局的,並且在數據庫上下文中必須是唯一的。