注册 登录
编程论坛 SQL Server论坛

[求助]有关建立外键的问题,呵呵

ninggang 发布于 2006-12-25 14:27, 1202 次点击

在sqlserver数据库中,我建立了自己的三张表,一是Students表,主键为SID 数据类型为Int ,4个字节,二是Book表,主键为ID,数据类型为 int,4个字节,还有一张为BS表,其中也有SID列和ID列,在创建关系或外键时,引用Book的主键作为BS的外键没有问题,可是应用Students表的SID主键作为BS表的外键就有问题,我也检查了好久,比如说数据类型是否一致等,可是依然没有检查出来,其中,报错信息如下:
'Students' 表成功保存
'BS' 表
- 不能创建关系 'FK_BS_Students'。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 'FK_BS_Students' 冲突。该冲突发生于数据库 'homework',表 'Students', column 'SID'。
我就搞不懂了,Students表应该和Book表是对等的关系,而且还说什么Alter Table语句与foreign key冲突,呵呵,不懂,望高手指点,谢谢

5 回复
#2
angeloc2006-12-25 14:58
STUDENTS表的SID不可以既是主键又是外键,所以出错
#3
chenxkfox2006-12-25 15:46
我根据你提供的信息试着做了一下,
1 创建一个表t1
主键:id1 int(4)
另一字段:name char (10)
2 创建另一个表t2
主键:id2 int(4)
另一字段:name2 char (10)
3 创建第三个表t3
字段一:id1 int(4)
字段一:id2 int(4)
创建关系一:
FK_t3_t1 成功!
创建关系二:
FK_t3_t2 成功!
#4
ninggang2006-12-27 08:46
哈哈,这个问题我已经搞定了,实际上原因很简单,你们的方法,都没有问题,但关键的问题是我表里面有数据,你们表里面没有数据,在加外键约束的时候,如果没有加With nocheck则默认为check所以,先要检查里面数据的合法性,呵呵
#5
bygg2006-12-27 15:29
以下是引用ninggang在2006-12-27 8:46:50的发言:
哈哈,这个问题我已经搞定了,实际上原因很简单,你们的方法,都没有问题,但关键的问题是我表里面有数据,你们表里面没有数据,在加外键约束的时候,如果没有加With nocheck则默认为check所以,先要检查里面数据的合法性,呵呵

怎么不早说???

#6
ninggang2006-12-27 15:51

嘿嘿

1