早上好,我在研究SQL,今天我發現了兩種聲明外鍵的方法(對於MySQL)。我想知道它在這兩種語法之間會發生什麼變化,爲什麼我需要爲外鍵設置一個名稱(語法2)。這兩種聲明外鍵的方法有什麼不同?
語法1:
CREATE TABLE `test2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`idtest` int(10) unsigned NOT NULL,
`desc` varchar(45) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`idtest`) REFERENCES `test` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
語法2:
CREATE TABLE `test2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`idtest` int(10) unsigned NOT NULL,
`desc` varchar(45) NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_1` (`idtest`),
CONSTRAINT `FK_1` FOREIGN KEY (`idtest`) REFERENCES `test` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
謝謝!
他們只是表達2的同樣的事情的方式。表達FK的第一種方式將作爲您在那裏輸入的第二種形式來實現,換句話說,它們將作爲約束來實現。 – Icarus
@Icarus無論您是否擁有'CONSTRAINT'關鍵字,它都是一個約束。 – NullUserException