导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

怎么定义外键

cstt60777 2008-01-14 04:17:53
2 table
table 员工
[编号]
,[姓名]
,[身份证号]
,[性别]
,[固定电话]
,[手机]
,[照片]
table 上班时间
[员工编号]
,[上班时长]
,[上班日期]

我该怎么第两个表??

我已经定义了 员工表的[编号]是主键 ,上班时间表的主键是[员工编号],

但是我不会定义外键了,是在上班时间表中定义关系如下:主键是上班时间的员工编号,与之对应外键是员工表的编号

我这样定义对吗????

可是我员工表中员工只有001和002,可是我在上班时间表中天下员工008的上班时间,却是可以添加保存,

为什么,我添加关系错了,还是没有启用那里??我用的是sql2005
...全文
476 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouchunyu 2008-01-14
帮顶
回复
zghua851004 2008-01-14
如果插入下面的语句将会报错
insert into tb2 values(008,getdate())

错误信息如下:
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 FOREIGN KEY 约束"FK_tb1_id"冲突。该冲突发生于数据库"sjk",表"dbo.tb1", column 'id'。
语句已终止。
回复
zghua851004 2008-01-14
可是我员工表中员工只有001和002,可是我在上班时间表中天下员工008的上班时间,却是可以添加保存,
--
员供表中没有编号008,确能添加到上班时间表,说名你没有外键外键约束吧,下边是一个简单的例子。
create table tb1
(
id int primary key,
name varchar(20),

)
create table tb2
(
id int primary key,
time datetime
constraint FK_tb1_id FOREIGN KEY(id) REFERENCES tb1(id)
)
go
insert into tb1 values(001,'aa')
insert into tb1 values(002,'bb')

回复
tim_spac 2008-01-14
table 员工
[编号] -- PK
,[姓名]
...

table 考勤记录
[LogID] -- PK
,[员工编号] -- FK
,[LoginTime]
,[LogoutTime]

table 上班时间
[员工编号] -- PK, FK
,[上班时长]
,[上班日期]
回复
planebus 2008-01-14

create table 员工
[编号] primary key
,[姓名]
,[身份证号]
,[性别]
,[固定电话]
,[手机]
,[照片]

create table 上班时间
[员工编号] FOREIGH KEY REFERECCES 员工([编号])
,[上班时长]
,[上班日期]

回复
planebus 2008-01-14

create table 员工
[编号] primary key
,[姓名]
,[身份证号]
,[性别]
,[固定电话]
,[手机]
,[照片]

create table 上班时间
[员工编号] FOREIGH KEY REFERECCES 员工([编号])
,[上班时长]
,[上班日期]

回复
planebus 2008-01-14

create table 员工
[编号] primary key
,[姓名]
,[身份证号]
,[性别]
,[固定电话]
,[手机]
,[照片]

create table 上班时间
[员工编号] FOREIGH KEY REFERECCES 员工([编号])
,[上班时长]
,[上班日期]

回复
qiuming0306 2008-01-14
应当是把员工表的编号当作上班时间表编号的外键,这才是你要的效果!就是fk在员工表上!
回复
qiuming0306 2008-01-14
是不是你弄反了!
回复
JL99000 2008-01-14
我已经定义了 员工表的[编号]是主键 ,上班时间表的主键是[员工编号],
但是我不会定义外键了,是在上班时间表中定义关系如下:主键是上班时间的员工编号,与之对应外键是员工表的编号
--
这么定义,把上班时间表中的编号既做为主键,又做为外键


可是我员工表中员工只有001和002,可是我在上班时间表中天下员工008的上班时间,却是可以添加保存,
为什么,我添加关系错了,还是没有启用那里??我用的是sql2005
--
应该不可能吧,仔细看看,是不是把员工表中的编号做为了上班时间表的外键了
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告