嗨我正在使用mysql5 innoDB数据库。我想强制删除父行及其相关子表数据的数据。我怎样才能做到这一点。任何人都可以帮助我。如何从mysql5父表中删除数据?
1
A
回答
6
如果您使用innodb,您可以使用FOREIGN KEY CONSTRAINTS级联删除,当您删除父行时,孩子也将被删除。
查看更多http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
另一种方法是删除使用多个数据表的语法。 看看http://dev.mysql.com/doc/refman/5.1/en/delete.html
最后的办法是在删除动作后使用触发器。 看看http://dev.mysql.com/doc/refman/5.1/en/trigger-syntax.html
你也可以使用顺序删除语句,但在这种情况下,你应该使用事务。注意:这个只适用于innodb表格。连续
0
两个删除会做的伎俩:如果您正在使用外键约束
delete from ChildTable where ParentID = ?
delete from ParentTable where ID = ?
0
,那么你可以删除梯级利用条款,同时创建一个子表从父删除行表,那么它也会从子表中删除相应的主键行。
如果要从父表中删除行,而不是从子表中删除对应的主键行,则在删除级联时使用null创建子表时的子句。
例如:创建一个名为“学生”父表和子表称为“库”
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");
现在从父表
delete from student where sno=2;
那么它会删除删除第二行子表中相应的行(2 JAVA)。因为您只使用“on delete cascade”子句。
如果您正在使用删除级联null,则它将只从父表中删除行(2 Sai)。
:) :) :) :) :) :) :) :) :) :)
相关问题
- 1. 如何删除mysql5中的数据库的所有程序
- 2. 如何从数据透视表中删除“数据”标题
- 3. 从它的父母中删除图表
- 4. 如何从Firebase中删除数据库?
- 5. 如何从数据库中删除?
- 6. 如何从json数据中删除\
- 7. 如何从数据框中删除行?
- 8. 如何从标签中删除数据
- 9. 如何从MemoryStream中删除数据
- 10. 从xmlDoc中删除节点,如何删除父节点?
- 11. 如何从DOM中删除子元素时删除父元素?
- 12. 如何删除子表中的数据?
- 13. 熊猫:如何根据列表从数据框中删除行?
- 14. 如何从表格中的api删除表格tr数据?
- 15. 如何删除通知计数并删除父母删除时
- 16. 如何使JavaScript函数从MySQL数据库中删除表行
- 17. 删除MySQL中的父表
- 18. 如何批量搜索MySQL5数据库?
- 19. 从数据库表中删除
- 20. 从链接列表中删除数据
- 21. Lisp从列表中删除数据
- 22. 从哈希表中删除数据
- 23. 从SQL表中删除数据
- 24. 数据不会从表中删除
- 25. 从数据库中删除列表项
- 26. 从数据表中删除datarow
- 27. 从sqlite表中删除数据iphone sdk?
- 28. 删除从属表中的数据
- 29. 从数据表中删除列
- 30. 从数据表中删除第一列
这是如果表引擎不不支持'国外keys' – ty812
所有表引擎的方法支持外键,我会使用触发器,这样我就不必考虑它了。 – Johan