0

リンクされた 2 つの行を削除する方法を教えてもらえますか?

Delphi 2007 と MySQL を使用しています。

2 つのテーブルを持つデータベースがあります。

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 アプリケーションにはDeleteボタンがあります。DBGrid で連絡先を見つけてDeleteボタンを押すと、テーブルから連絡先のみを削除できますcontacts。連絡先の画像も削除します。

contactsテーブルから行を削除し、テーブルから行を削除したいPicture。テーブルは でテーブルにPictureリンクされています。contactsforeign key

4

1 に答える 1

2

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

マスターテーブルから行を削除すると、PictureSQLエンジンは詳細テーブルにカスケードされ、そこでも削除されます。

于 2012-10-02T13:55:23.223 に答える