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

qiaoqia6448 2006-03-03 04:49:12
建库语句:
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'。
语句已终止。
为什么出错了,我不是提前删除关联表的了吗?
...全文
194 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzhs 2006-03-03
  • 打赏
  • 举报
回复
...
我说的事务的原因好像不存在呢.
开始没有仔细看你的表的结构,现在才发现,t_A_A表建的好复杂.

你试一下在"企业管理器"-->"表t_A_A上"-->"管理相关性"里,找到两个外键,把"级联删除相关记录"勾上试试呢.
qiaoqia6448 2006-03-03
  • 打赏
  • 举报
回复
实践证明事务没有问题,按照您老人家的方法,拔出错的的外键设为Cascade删除就可以了,
但是我还是不明白其中的道理?能讲解一下吗?
还有我怎么给你加分呀?
lzhs 2006-03-03
  • 打赏
  • 举报
回复
可能是你用了显式事务的原因.
我自己的分析如下:
当用显式事务时,由于你还没有显式的Commit或Rollback事务,因此SQL Server会认为此时的关联表并没有被真正的删除!

先不要用事务试一下,如果成功的话,就可以证明我上面的说法是正确的了!
呵呵...

其实,也可以有另外一种解决方法,就是将关联表的外键设置为Cascade删除...

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧