急问:为什么设置外键不成功???

[复制链接]
查看11 | 回复9 | 2007-9-26 18:42:10 | 显示全部楼层 |阅读模式
我在sql server 2005 企业版中为表employee中的列fo_sche_id设置外键,列fo_sche_id的基表是formal_scheme.
表employee如下:
employee
------------------------------------------------------------------------------------------------------------------- fo_sche_id
varchar(20)
不允许为空非主键

表formal_scheme如下:
formal_scheme
-----------------------------------------------------------------------------------------------------------------
fo_sche_id
varchar(20)
不允许为空 主键
在sql server 2005中设置完外键进行保存的时候,出现了这样的提示消息:
“formal_scheme”表成功保存
“employee”表
- 无法创建关系“FK_employee_formal_scheme”。
ALTER TABLE 语句与 FOREIGN KEY 约束"FK_employee_formal_scheme"冲突。该冲突发生于数据库"fingercheckin",表"dbo.formal_scheme", column 'fo_sche_id'。

哪位大人能告诉我这是怎么回事么?我在employee表中的其它外键都可以设置成功,唯独这个外键不成功!!
先在这儿谢谢大家^_^
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
在sql server 2005中设置完外键进行保存的时候,请问LZ进行保存的是哪个表?(亦即LZ是在哪个表里设置外键的?)
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
ALTER TABLE 语句与 FOREIGN KEY 约束"FK_employee_formal_scheme"冲突。该冲突发生于数据库"fingercheckin",表"dbo.formal_scheme", column 'fo_sche_id'。
你的外键不是在建立表的时候建立的吗,是不是表中已经存在不匹配的数据了
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
我是在employee表中设置的外键,保存的是employee表
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
谢谢3楼大虾的提醒,我在创建表employee时没有设置外键,在我已经录入数据后,发现忘了设置外键,结果employee 表中的fo_sche_id的列值和formal_scheme表中的fo_sche_id的列值不一致,所以才不能成功地设置外键,小du在这里谢过大家了(^_^)
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
不能设置外键,多半都是这个原因
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
在sql server的alter table语句中有一个 with nocheck的关键字,可以在创建约束的时候对原始数据不进行校验,你可以在帮助里看到。
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
数据库白痴我来问个问题,希望牛人们解答一下啊(急急急)。。。。。我出现的问题跟这位LZ的一模一样,但我不知道怎样操作才能使列值相同??谢谢各位了~~




回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
为啥还是没人光顾呢?
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
应该是约束问题,在错误信息里面也有提示,主键和外键都再约束的范围的,不能违反其规则吧!lz已经发现问题了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行