为什么运行时提示错误?

hljhl 2003-10-07 11:42:45
下面过程的意思是给一个69个字段的表中名前两个字符是"d_"的所有列建外键,和外键关联的表名即为该列名的前4个字符

ALTER proc usp_create_zb_fk
as
declare @i int,@zdm varchar(10),@bl varchar(200)
set @i=69
while @i>0
begin
set @zdm=col_name(object_id('zzryxxb'),@i)
print @zdm
if substring(@zdm,1,2)='d_'
begin
set @bl='alter table zzryxxb add constraint fk_zb_'+substring(@zdm,3,2)+' foreign key ('+@zdm+') references '+substring(@zdm,1,4)+'(code) on update cascade'
exec(@bl)
end
set @i=@i-1
end
return

语法检查没有错,但运行时提示:“服务器: 消息 1785,级别 16,状态 1,行 1
将 FOREIGN KEY 约束 'fk_zb_db' 引入表 'zzryxxb' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
服务器: 消息 1750,级别 16,状态 1,行 1
未能创建约束。请参阅前面的错误信息。”
请指教!谢谢
...全文
37 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-10-07
  • 打赏
  • 举报
回复
同意马可.
pengdali 2003-10-07
  • 打赏
  • 举报
回复
ALTER proc usp_create_zb_fk
as
declare @i int,@zdm varchar(10),@bl varchar(200)
set @i=69
while @i>0
begin
set @zdm=col_name(object_id('zzryxxb'),@i)
print @zdm
if substring(@zdm,1,2)='d_'
begin
set @bl='alter table zzryxxb add constraint fk_zb_'+substring(@zdm,3,2)+' foreign key ('+@zdm+') references '+substring(@zdm,1,4)+'(code)'
exec(@bl)
end
set @i=@i-1
end
return
txlicenhe 2003-10-07
  • 打赏
  • 举报
回复
substring(@zdm,3,2)有重复吧?
hljhl 2003-10-07
  • 打赏
  • 举报
回复
请问同一个代码表能不能做另一个表的两个不同字段的外键

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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