从关系连接的两个表中删除

时间:2013-11-25 03:10:29

标签: php mysql sql codeigniter

我想从两个表中删除一行,Teams& Teams_Members。团队表中的id是主键,是team_members表中的外键,称为team_team_id

我试过用这个:

DELETE `teams`, `teams_members`
FROM `teams`
LEFT JOIN `teams_members`
    ON `teams`.`id` = `teams_members`.`team_team_id`
WHERE `teams`.`id` = 2;

但是我收到了这个错误:

Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`animatordb`.`teams_members`, CONSTRAINT `fk_teams_members_team` FOREIGN KEY (`team_team_id`) REFERENCES `teams` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

我如何实现目标,更具体地说,我想在 PHP 中实现这一目标。我正在使用Codeigniter。

5 个答案:

答案 0 :(得分:0)

您只需先从team_members中删除,然后就可以从团队表中删除。

如果您想在PHP中使用CodeIgniter执行此操作,则此链接可能会很有用

PHP delete from database with codeigniter

答案 1 :(得分:0)

Transactions中使用2个查询,如下所示:

//start Transactions
DELETE FROM team_members WHERE team_team_id= 2;
DELETE FROM teams WHERE id = 2;
//commit or rollback.

答案 2 :(得分:0)

首先删除团队成员,然后团队分离删除。

如果要确保两个删除都执行在事务中封装删除

答案 3 :(得分:0)

您可以尝试级联表。因此,当您删除/更新主表时,其他关系表会自动更改。

答案 4 :(得分:0)

我想多表语法仅在您从单个表中删除时才有用。要从两个表中删除,逐个删除要好得多。首先从包含外键和表的表中删除另一张桌子。

这是我最后编写的代码,

        $this->db->trans_start();

        $this->db->query("DELETE FROM teams_members WHERE team_team_id='$teamid';");
        $this->db->query("DELETE FROM teams WHERE id='$teamid';");

        $this->db->trans_complete();

我正在使用我在问题中提到的Codeigniter。