2016-06-21 58 views
0

我們有兩張桌子。一個被稱爲「站」,有幾列;其中之一是「CityCode」。第二個表格稱爲「StationTimezone」,它也有「CityCode」列。 在StationTimezone上,我們定義了一個「CityCode」上的約束 - 它引用「Station」中的「CityCode」。MySQL約束如何失效?

CREATE TABLE `StationTimezone` (
    `CityCode` varchar(3) NOT NULL, 
    `Timezone` varchar(50) NOT NULL COMMENT 'Name of the timezone', 
    PRIMARY KEY (`CityCode`), 
    CONSTRAINT `StationTimezone_ibfk_1` FOREIGN KEY (`CityCode`) REFERENCES `Station` (`CityCode`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='CityCode to Timezone name mapping'; 

我們現在看到,StationTimezone已經得到了沒有定義到Station的條目。這意味着,在刪除約束之後,我們不能重建它。 現在我已經有了一個問題,我們怎麼能夠解決這個問題。如何將「CityCode」添加到StationTimezone而不在「Station」中添加相同的「CityCode」?

回答

0

有可能與foreign_key_checks即暫時關閉外鍵檢查:

SET foreign_key_checks = 0; 
DELETE FROM Station; 
SET foreign_key_checks = 1; 

你或其他人可能這樣做,也許是意外還是出於某種原因類似散裝數據插入,但像這樣的可能影響,通常不推薦。