首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql5中删除父表中的数据?

如何在mysql5中删除父表中的数据?
EN

Stack Overflow用户
提问于 2011-08-26 15:35:58
回答 3查看 2K关注 0票数 1

嗨,我使用的是mysql5 innoDB数据库。我想要从父行及其相关的子表数据中强制删除数据。我该怎么做呢?任何人都可以帮助我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-26 15:38:21

如果你使用innodb,你可以使用外键约束进行级联删除,当你删除父行时,子行也会被删除。

查看更多http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

另一种方法是在delete中使用多表语法。看看http://dev.mysql.com/doc/refman/5.1/en/delete.html

最后一种方法是在删除操作之后使用触发器。看看http://dev.mysql.com/doc/refman/5.1/en/trigger-syntax.html

您还可以使用连续的delete语句,但在这种情况下,您应该使用transaction。注意:这个只适用于innodb表。

票数 6
EN

Stack Overflow用户

发布于 2011-08-26 15:41:53

一行中的两个删除操作就可以完成此操作:

代码语言:javascript
复制
delete from ChildTable where ParentID = ?
delete from ParentTable where ID = ?
票数 0
EN

Stack Overflow用户

发布于 2011-08-26 18:35:09

如果您正在使用外键约束,那么您可以在创建子表时使用on delete cascade子句从父表中删除一行,然后它也会从子表中删除相应的主键行。

如果只想从父表中删除行,而不是从子表中删除相应的主键行,那么在创建子表时使用on delete cascade null子句。

以图书馆为例:创建名为“”的父表和名为“”的子表。

代码语言:javascript
复制
create table student(sno integer(5) primary key,sname varchar(20));

insert into student values(1,"suman");
insert into student values(2,"sai"); 
insert into student values(3,"saaaa");

create table library(sno integer(5) references primary key(sno) on delete cascade,book_name varchar(20));

insert into student values(1,"c");
insert into student values(2,"JAVA");
insert into student values(3,"ORACLE");

现在从父表中删除第二行

代码语言:javascript
复制
delete from student where sno=2;

然后,它将从子表中删除相应的行(2个JAVA)。因为您只使用了"on delete cascade“子句。

如果您使用on delete cascade null,那么它将只从父表中删除行(2SAI)。

:):)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7201425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档