CASCADE DELETE如何删除子行

时间:2012-11-20 11:10:55

标签: mysql innodb cascade

我有3张桌子

playergoalcard

我应该如何构建我的数据库,以便自动删除包含goal的{​​{1}}和card行?

我的表格声明我想我应该添加删除级联但我不太了解它所以你们中的任何人可以帮助我吗?

player id

1 个答案:

答案 0 :(得分:0)

我没有MySQL运行atm,但下面的代码应该适用于目标。这个想法是,当您定义外键时,您可以分配删除和更新规则。这些适用于主键(播放器中的id)被修改时。因此,当删除播放器中的主键(即删除播放器)时,具有相应外键的行根据其规则行事。级联意味着“跟随”,所以在这种情况下也删除它。

CREATE TABLE IF NOT EXISTS `#__footsal_goals` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,

`state` TINYINT(1)  NOT NULL DEFAULT '1',
`checked_out` INT(11)  NOT NULL ,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_by` INT(11)  NOT NULL ,
`id_player` INT(11)  NOT NULL ,
`id_resault` INT(11)  NOT NULL ,
`id_game` INT(11) NOT NULL ,
`goals_number` VARCHAR(255)  NOT NULL ,
`id_session` VARCHAR(11)  NOT NULL ,
PRIMARY KEY (`id`),
FOREIGN KEY goals_player_fk (`id_player`) 
REFERENCES `#__footsal_players` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT COLLATE=utf8_polish_ci;