0

私は3つのテーブルを持っています

playergoalcard

goal自動的に削除してcard行を含むようにデータベースを構築するにはどうすればよいplayer idですか?

私のテーブルの宣言は、カスケード削除を追加する必要があると思いますが、よく理解していないので、誰か助けてもらえますか?

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

`ordering` INT(11)  NOT NULL ,
`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_team` INT(11)  NOT NULL ,
`first_name` varchar(255)  NOT NULL ,
`last_name` varchar(255)  NOT NULL ,
`birth_date` DATE  NOT NULL DEFAULT '0000-00-00',
`email` varchar(255)  NOT NULL ,

 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT COLLATE=utf8_polish_ci

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`)
) ENGINE=InnoDB DEFAULT COLLATE=utf8_polish_ci;


CREATE TABLE IF NOT EXISTS `#__footsal_yellow_cards` (
`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_game` INT(11) NOT NULL ,
`id_resault` INT(11)  NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT COLLATE=utf8_polish_ci;
4

1 に答える 1

0

私はMySQLでatmを実行していませんが、以下のコードは目的のために機能するはずです。外部キーを定義するときに、削除ルールと更新ルールを割り当てるという考え方です。これらは、主キー (プレーヤーの ID) が変更されたときに適用されます。そのため、プレーヤーの主キーが削除されると (つまり、プレーヤーが削除されると)、対応する外部キーを持つ行は、それらのルールに従って動作します。Cascade は「フォロー」を意味するので、この場合はそれも削除します。

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;
于 2012-11-20T11:27:47.873 に答える