黑马程序员技术交流社区

标题: 关于SQL语句的问题 [打印本页]

作者: 张恒维    时间: 2012-6-19 23:27
标题: 关于SQL语句的问题
有 A B两表

A 表

  编号 姓名
------------------
  1 张三
  2 李四

B表

  id(主) 编号 成绩
-------------------------
  1 1 80
  2 2 90

我现在想删除A表里的记录 如果B表里有它的相关记录则不能删除,因为在C#里用 所以想只用一条SQL语句 发给数据库 请教。
作者: 戴伟    时间: 2012-6-20 00:31
我试过这个,但是执行不了:
delete from A where A.编号 = '1' and ((delete from B where B.编号='1')<>-1)
是级联问题,所以你可以考虑增加级联删除功能,这样只用操作一个表就行了,下面网页有讲的
http://blog.163.com/chinagujing@yeah/blog/static/170937439201092264742496/
作者: 王继光    时间: 2012-6-20 00:39
伪代码:
     查询B表, 看有没有A表中的 编号信息,
     有则需要删除. 然后再删除A表中的信息;
     如果没有那么直接删除A表的信息,

在执行删除A表数据之前, 先判断一下B表的情况就可以吧   
作者: 谢栋文    时间: 2012-6-20 09:09
MSSQL SERVER数据库默认的情况下主外键表的级联删除是关闭的,因此在你删除主键表记录的情况下如果外键表存在与之相关联的信息,它会回滚操作并且报错,这种情况下楼主只需要在程序捕获异常就行了不需要再去判断B表是否有记录
作者: 程艳伟    时间: 2012-7-2 11:40
呵呵,这个多简单啊,不用sql语句,直接C#写方法啊,你先读取表,然后判断b表有没有这个数据,如果没有就执行删除语句,有的话就不执行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2