PHP,MySQL-使用join从多个表中删除

PHP,MySQL-使用join从多个表中删除,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有三张桌子: 类别、帖子和评论 类别和帖子通过categories.id\u category=posts进行连接。类别和帖子和评论通过posts.id\u post=comments.post\u id进行连接 当我删除类别时,我还想删除与该类别相关的所有帖子以及与该帖子相关的所有评论。这可以在一个查询中完成吗?MySQL InnoDB数据库支持带ON DELETE CASCADE子句的外键约束。使用此规范,在对引用的表执行删除操作时,相关的从属表行将被删除 这是一个例子: CREATE T

我有三张桌子: 类别、帖子和评论

类别和帖子通过categories.id\u category=posts进行连接。类别和帖子和评论通过posts.id\u post=comments.post\u id进行连接


当我删除类别时,我还想删除与该类别相关的所有帖子以及与该帖子相关的所有评论。这可以在一个查询中完成吗?

MySQL InnoDB数据库支持带ON DELETE CASCADE子句的外键约束。使用此规范,在对引用的表执行删除操作时,相关的从属表行将被删除

这是一个例子:

CREATE TABLE categories (
    id_category int unsigned not null primary key,
    ...
);
CREATE TABLE posts (
    id_post int unsigned not null primary key,
    category_id int unsigned not null,
    ...
    FOREIGN KEY (category_id) REFERENCES categories (id_category)
       ON DELETE CASCADE
);
CREATE TABLE comments (
    post_id int unsigned not null,
    ...
    FOREIGN KEY (post_id) REFERENCES posts (id_post)
       ON DELETE CASCADE
);
在这里,您可以找到有关在MySQL中使用外键的文档:

MySQL InnoDB数据库支持带ON DELETE CASCADE子句的外键约束。使用此规范,在对引用的表执行删除操作时,相关的从属表行将被删除

这是一个例子:

CREATE TABLE categories (
    id_category int unsigned not null primary key,
    ...
);
CREATE TABLE posts (
    id_post int unsigned not null primary key,
    category_id int unsigned not null,
    ...
    FOREIGN KEY (category_id) REFERENCES categories (id_category)
       ON DELETE CASCADE
);
CREATE TABLE comments (
    post_id int unsigned not null,
    ...
    FOREIGN KEY (post_id) REFERENCES posts (id_post)
       ON DELETE CASCADE
);
在这里,您可以找到有关在MySQL中使用外键的文档:

MySQL InnoDB数据库支持带ON DELETE CASCADE子句的外键约束。使用此规范,在对引用的表执行删除操作时,相关的从属表行将被删除

这是一个例子:

CREATE TABLE categories (
    id_category int unsigned not null primary key,
    ...
);
CREATE TABLE posts (
    id_post int unsigned not null primary key,
    category_id int unsigned not null,
    ...
    FOREIGN KEY (category_id) REFERENCES categories (id_category)
       ON DELETE CASCADE
);
CREATE TABLE comments (
    post_id int unsigned not null,
    ...
    FOREIGN KEY (post_id) REFERENCES posts (id_post)
       ON DELETE CASCADE
);
在这里,您可以找到有关在MySQL中使用外键的文档:

MySQL InnoDB数据库支持带ON DELETE CASCADE子句的外键约束。使用此规范,在对引用的表执行删除操作时,相关的从属表行将被删除

这是一个例子:

CREATE TABLE categories (
    id_category int unsigned not null primary key,
    ...
);
CREATE TABLE posts (
    id_post int unsigned not null primary key,
    category_id int unsigned not null,
    ...
    FOREIGN KEY (category_id) REFERENCES categories (id_category)
       ON DELETE CASCADE
);
CREATE TABLE comments (
    post_id int unsigned not null,
    ...
    FOREIGN KEY (post_id) REFERENCES posts (id_post)
       ON DELETE CASCADE
);
在这里,您可以找到有关在MySQL中使用外键的文档:

最好的方法是使用
外键创建表
,并在表中使用
引用
->调用
引用完整性
。看一看,也许这对你来说是正确的是的。它可以。有或没有引用完整性,如果您不想使用
外键
并希望使用其他方法,请使用触发器来处理它。最好的方法是使用
外键
创建表,并在表->调用
引用完整性
中使用
引用。看一看,也许这对你来说是正确的是的。它可以。有或没有引用完整性,如果您不想使用
外键
并希望使用其他方法,请使用触发器来处理它。最好的方法是使用
外键
创建表,并在表->调用
引用完整性
中使用
引用。看一看,也许这对你来说是正确的是的。它可以。有或没有引用完整性,如果您不想使用
外键
并希望使用其他方法,请使用触发器来处理它。最好的方法是使用
外键
创建表,并在表->调用
引用完整性
中使用
引用。看一看,也许这对你来说是正确的是的。它可以。有或没有引用完整性,如果您不想使用
外键
,并想使用其他方式,请使用触发器来处理。因此,逻辑是我只需要删除类别,所有帖子和评论都将自动删除?是的,您可以在categories表上执行一次删除,所有引用行也将被删除。我在回答中澄清了这一点。酷:)。我可以更改我的表吗?或者我需要创建新表以便外键工作?您可以更改表,例如:
altertableposts添加索引(category_id)
添加索引,然后
altertableposts添加外键(category_id)在更新时引用DELETE级联上的categories(id)所以,逻辑是我只需要删除类别,所有的帖子和评论都会被自动删除?是的,你可以在类别表上执行一次删除,所有引用的行也会被删除。我在回答中澄清了这一点。酷:)。我可以更改我的表吗?或者我需要创建新表以便外键工作?您可以更改表,例如:
altertableposts添加索引(category_id)
添加索引,然后
altertableposts添加外键(category_id)在更新时引用DELETE级联上的categories(id)所以,逻辑是我只需要删除类别,所有的帖子和评论都会被自动删除?是的,你可以在类别表上执行一次删除,所有引用的行也会被删除。我在回答中澄清了这一点。酷:)。我可以更改我的表吗?或者我需要创建新表以便外键工作?您可以更改表,例如:
altertableposts添加索引(category_id)
添加索引,然后
altertableposts添加外键(category_id)在更新时引用DELETE级联上的categories(id)所以,逻辑是我只需要删除类别,所有的帖子和评论都会被自动删除?是的,你可以在类别表上执行一次删除,所有引用的行也会被删除。我在回答中澄清了这一点。酷:)。我可以更改我的表吗?或者我需要创建新表以便外键工作?您可以更改表,例如:
altertableposts添加索引(category_id)
添加索引,然后
altertableposts添加外键(category_id)在更新时引用DELETE级联上的categories(id)