SQL 2005 循环或多重级联路径错误

jiangtianyin 2009-11-25 01:53:50
最经在设计一个数据库的时候遇到这个错误,一下是SQL语句
create table TbUser
(
ID varchar(20) Constraint PK_TbUser Primary key, --注册账号
PassWord varchar(12) Not Null, --密码
Permission int Not Null , --用户权限(0、管理员 1、个人用户 2、公司用户)
)
go

create table UserInfo
(
ID varchar(20) constraint FK_UserInfo_TbUser_ID foreign key(ID) references TbUser(ID) on update cascade , --用户账号
constraint PK_UserInfo primary key(ID),
UserName varchar(10) not null, --用户姓名
Sex bit not null, --性别(0、男 1、女)
Nation varchar(10) not null, --民族
Birthplace varchar(25) not null, --出生地
Birthday datetime not null, --出生日期
Marital bit not null, --婚姻状况(0、未婚 1、已婚)
PtLscape varchar(8) not null , --政治面貌
PersonID varchar(18) not null, --身份证号码
Adress varchar(60) not null, --住址
Emial varchar(30) not null, --邮箱
HomePhone varchar(12) null, --固定电话
MobilePhone varchar(12) null, --移动电话
Photo varchar(30) null, --相片
FinishSchool varchar(30) null, --毕业院校
Major varchar(30) null, --专业
EnglishLevel varchar(6) null, --英语水平
ComputerLevel varchar(20) null, --计算机水平
JobAge float null, --工作年限
Education varchar(10) not null, --学历
PubStatus bit not null default 0, --简历公开状态(0、不公开 1、公开)
)

go
create table CompanyInfo
(
CompanyID varchar(20) constraint PK_CompanyInfo primary key, --公司账号
constraint FK_CompanyInfo_TbUser_CompanyID foreign key(CompanyID) references TbUser(ID) on update cascade,
CompanyName varchar(60) not null, --公司名称
License varchar(20) not null, --公司注册码
CompanySimple varchar(30) null, --公司标志
Industry varchar(30) null, --公司所属行业
Quality varchar(20) null, --公司性质
BuildTime datetime null, --成立时间
RegisterMoney money null, --注册资金
EmployCount int null, --员工人数
ContactPerson varchar(20) null, --联系人
Fax varchar(12) null, --公司传真
Address varchar(60) null, --公司地址
PostCode varchar(6) null, --邮编
Email varchar(30) null, --公司邮箱
CompanyInformation text null, --公司简介
OrganizationID varchar(30) null, --组织机构吗
Phone varchar(12) null, --联系电话
HomePage varchar(50) null, --公司主页
AuditStatus bit not null default 0, --审核状态(0、未审核 1、已审核)
)
go

create table CompanyMsg
(
MessageID int not null identity(1,1), --消息编号
CompanyID varchar(20) constraint FK_CompanyMsg_CompanyInfo_CompanyID foreign key references CompanyInfo(CompanyID) on update cascade,--公司编号
UserID varchar(20) constraint FK_CompanyMsg_UserInfo_ID foreign key references UserInfo(ID) on update cascade,--求职者编号
AcceptStatus bit not null default 0, --接受状态(0、未接受 1、已接受)
MsgTime datetime not null default getdate(), --消息发送时间
constraint PK_CompanyMsg primary key(MessageID,CompanyID)
)

我的目的是希望能实现级联更新,错误如下:
消息 1785,级别 16,状态 0,第 1 行
将 FOREIGN KEY 约束 'FK_CompanyMsg_UserInfo_ID' 引入表 'CompanyMsg' 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。


请问这个 “循环或多重级联路径” 是什么意思,上面的代码是怎么导致这个问题的?(请结合我上面的例子讲解)
有什么好的解决方案?
...全文
388 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sytdeedee 2009-11-25
  • 打赏
  • 举报
回复
改为
  UserID varchar(20) constraint FK_CompanyMsg_UserInfo_ID foreign key references TbUser(ID) on update cascade,--求职者编号 


应该引用TbUser标的ID
jiangtianyin 2009-11-25
  • 打赏
  • 举报
回复
我不仅想知道如何解决,更重要的是想知道这个问题发生的根源在哪里,学习还是理解原理比较好,麻烦大家了
--小F-- 2009-11-25
  • 打赏
  • 举报
回复
提示很明显了 先去掉约束 再执行

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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