CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

删除记录时的外键参考错误,大家帮帮我吧!DELETE 语句与 COLUMN REFERENCE 约束

楼主qiaoqia6448()2006-03-03 16:49:12 在 MS-SQL Server / 疑难问题 提问

建库语句:  
  create   database   SFTMG  
  use   SFTMG  
  create   table   t_project(pid   smallint   IDENTITY,pname   varchar(80),pnumber   varchar(10),prequir   varchar(3000),pdescribe   varchar(4000),pisend   smallint,primary   key   (pid),unique(pnumber))  
  create   table   t_active(aid   smallint   IDENTITY,aname   varchar(80),anumber   varchar(10),adescribe   varchar(4000),astarttime   datetime,aendtime   datetime,pid   smallint,precostdate   mallint,primary   key(aid),foreign   key   (pid)   references     t_project(pid))  
  create   table   t_manpower(mid   smallint   IDENTITY,mname   varchar(40),msex   smallint,mbirthday   datetime,mknowlege   varchar(20),mcost   smallint,misend   smallint,mresume   varchar(4000),primary   key(mid))  
  create   table   t_A_M(aid   smallint,mid   smallint,   primary   key   (aid,mid),foreign   key(aid)   references   t_active(aid),foreign   key(mid)   references   t_manpower(mid))  
  create   table   t_A_A(aid   smallint,Paid   smallint,   primary   key   (aid,Paid),foreign   key(aid)   references   t_active(aid),foreign   key(paid)   references   t_active(aid))          
   
  这种结构的数据,在进行删除时出现错误:  
  执行语句:  
  begin   tran  
  declare   @aid   integer    
  set   @aid=5  
  delete   from   t_A_m   where   aid=@aid  
  delete   from   t_A_A   where   aid=@aid  
  delete   from   t_active   where   pid=2   and   aid=@aid    
  commit   tran      
  错误信息:  
  (所影响的行数为   0   行)  
   
   
  (所影响的行数为   0   行)  
   
  服务器:   消息   547,级别   16,状态   1,行   6  
  DELETE   语句与   COLUMN   REFERENCE   约束   'FK_t_A_A_t_active1'   冲突。该冲突发生于数据库   'SFTMG',表   't_A_A',   column   'paid'。  
  语句已终止。  
  为什么出错了,我不是提前删除关联表的了吗?  
  问题点数:20、回复次数:3Top

1 楼lzhs(快乐至上)回复于 2006-03-03 16:59:16 得分 20

可能是你用了显式事务的原因.  
  我自己的分析如下:  
  当用显式事务时,由于你还没有显式的Commit或Rollback事务,因此SQL   Server会认为此时的关联表并没有被真正的删除!  
   
  先不要用事务试一下,如果成功的话,就可以证明我上面的说法是正确的了!  
  呵呵...  
   
  其实,也可以有另外一种解决方法,就是将关联表的外键设置为Cascade删除...  
  Top

2 楼qiaoqia6448()回复于 2006-03-03 20:49:14 得分 0

实践证明事务没有问题,按照您老人家的方法,拔出错的的外键设为Cascade删除就可以了,  
  但是我还是不明白其中的道理?能讲解一下吗?  
  还有我怎么给你加分呀?Top

3 楼lzhs(快乐至上)回复于 2006-03-03 23:02:38 得分 0

...  
  我说的事务的原因好像不存在呢.  
  开始没有仔细看你的表的结构,现在才发现,t_A_A表建的好复杂.  
   
  你试一下在"企业管理器"-->"表t_A_A上"-->"管理相关性"里,找到两个外键,把"级联删除相关记录"勾上试试呢.Top

相关问题

  • INSERT 语句与 COLUMN FOREIGN KEY 约束冲突。
  • DELETE 语句与 COLUMN REFERENCE 约束冲突?怎么解决?
  • DELETE 语句与 COLUMN REFERENCE 约束 'FK__titleauth__au_id__0519C6AF' 冲突
  • 怎么用sql语句为表增加一个主键约束
  • 求救约束语句
  • 请问:使外键的约束失效的sql语句如何写啊?
  • 用CreateTable SQL语句创建了一个表,并定义了主键,那么如何用ALTER TABLE语句将这个主键的约束删除呢?
  • 建表的时候,设置外键约束条件老是出错,到底语句应该怎么写呢?
  • 请教大侠利用SQL语句如何建立可连锁更新和删除相关记录的外键约束?
  • [请邹键] 求Delete语句

关键词

  • 语句
  • smallint
  • 删除
  • aid
  • 事务
  • varchar
  • mid
  • 表
  • foreign
  • references

得分解答快速导航

  • 帖主:qiaoqia6448
  • lzhs

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo