SQLServer2000加入外键时提示冲突。(50分)

  • 主题发起人 主题发起人 tinyfish
  • 开始时间 开始时间
T

tinyfish

Unregistered / Unconfirmed
GUEST, unregistred user!
执行:
ALTER TABLE aaa
ADD FOREIGN KEY (bbb)
REFERENCES ccc
提示出错:
服务器: 消息 547,级别 16,状态 1,行 1
ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 'FK__aaa__bbb__27C3E46E' 冲突。该冲突发生于数据库 'db',表 'ccc', column 'bbb'。

查看这两个table,都不存在这个关系。
再看sysobjects,也找不到'FK__aaa__bbb__27C3E46E'。

怎么回事?各位帮忙。
 
先把aaa表的主键去掉,然后ALTER TABLE,这样就不会出错了。当然,改好后再设置主键。
 
你使用它的<企业管理器>看能不能加入
 
建议在enterprise manager实现,同时利用sql server的sql监视器检察
 
我举的例子虽然只有一个,但实际的数据库中有很多外键要加,涉及到的表也很多,如果手工改就惨了。
我是用ERWin改的。
sun2003是不是碰到过同样的问题?我想先确认是不是我的SQLServer有问题。
 
to tinyfish,SQLServer是没有问题的。我是经常碰到这样的问题,最笨的办法只能一个个改。小弟也没有更改的解决办法,不过,当表中没有记录时好象可以直接用alter table的。
 
to windbell, cobi:enterprise manager也会出错。
to sun2003:你说的删除主键,是把这个column删掉,还是只是去掉PK约束?
BTW,这样的方法也给你试出来,强。
 
to tinyfish 只是去掉PK约束
 
你查查你的表中有没有数据,如果有数据就会出这种错的。但是有个语句是不检查现存
数据的,你自己查查,加上就好了
 
to oldppp:果然有数据。我还以为都删掉了。谢谢。
你说的是WITH NOCHECK吧。
 
这是你现有库中的数据不符合现在所定的约束,所以不能创建,一个方法是删除表aaa中的数据
另外就是在创建关系时将"[red]创建中检查现存数据[/red]"关闭(这是在企业管理器中的创建数据库关系图)
 
to winbell:哦,我以前还真没注意到这个选项。thx。
 
后退
顶部