2012-10-02 81 views
0

有人可以顯示我如何刪除兩個鏈接的行嗎?如何從MySQL數據庫中刪除兩個鏈接的行?

我使用Delphi 2007和MySQL。

我有兩個表的數據庫:

CREATE TABLE `Picture`.`Picture` (
    `ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
    `IMG` LONGBLOB, 
    PRIMARY KEY (`ID`) 
) 
ENGINE = InnoDB; 

CREATE TABLE `contacts` (
    `ID` int(10) unsigned NOT NULL auto_increment, 
    `FirstName` varchar(45) NOT NULL, 
    `LastName` varchar(45) NOT NULL, 
    `Phone` varchar(45) default NULL, 
    `PICID` int(10) unsigned default NULL, 
    PRIMARY KEY (`ID`), 
    KEY `FK_contacts_1` (`PICID`), 
    CONSTRAINT `FK_contacts_1` FOREIGN KEY (`PICID`) REFERENCES `picture` (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

在我的Delphi應用我有刪除按鈕。當我在我的DBGrid上找到一些聯繫人並按刪除按鈕我只能刪除表contacts中的聯繫人,我也想刪除聯繫人圖片。

我想刪除表contacts中的一行,並從表Picture中刪除一行。表Picture鏈接到表contactsforeign key

+1

在外鍵約束後追加'ON DELETE CASCADE'。無論您是否使用Delphi,這都能解決您的問題。 – nalply

回答

2

使用FK與ON DELETE CASCADE - http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

當您刪除主表Picture SQL引擎級聯細節表中的一行,太刪除那裏。

+0

@nalply你確定它肯定會級聯嗎?任何版本的mySQL與任何表後端?我寫了「應該級聯」的意圖。 –

+0

引擎是InnoDB是很重要的。我有一個完全使用它的項目。 Op有'ENGINE = InnoDB',所以不用擔心。 – nalply

相關問題