• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

建外键的问题

律己修心 学生  2008-03-31 04:49:26
create table TT(id int identity(1,1),
a int,
b int,
constraint PK_TT primary key (id ,a)
)

create table DD(c int references TT(id),d int)


这样无法建表DD了

怎么改才能让
DD的C字段只引用TT的ID列作外键(TT的ID列是TT的主键之一)
...全文
54 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
律己修心 2008-03-31
[Quote=引用 8 楼 zhuiri2005 的回复:]
引用楼主 GDC_ZhaoYZ0304360 的帖子:
create table TT(id int identity(1,1),
a int,
b int,
constraint PK_TT primary key (id ,a)
)

create table DD(c int references TT(id),d int)


这样无法建表DD了

怎么改才能让
DD的C字段只引用TT的ID列作外键(TT的ID列是TT的主键之一)

外键:一个表的非码属性(组)对本表或其他表的主码具有参照关系,那么该非码属性(组)就是该表的外键。…
[/Quote]

只参照主表的主键中的其中一个
不能合并吧
回复
律己修心 2008-03-31
不匹配不行吗?

DD表里的d字段
和TT表里的数据无关啊

有办法吗?

还是说
SQLSERVER不支持这种操作呢?
回复
zhuiri2005 2008-03-31
[Quote=引用楼主 GDC_ZhaoYZ0304360 的帖子:]
create table TT(id int identity(1,1),
a int,
b int,
constraint PK_TT primary key (id ,a)
)

create table DD(c int references TT(id),d int)


这样无法建表DD了

怎么改才能让
DD的C字段只引用TT的ID列作外键(TT的ID列是TT的主键之一)
[/Quote]
外键:一个表的非码属性(组)对本表或其他表的主码具有参照关系,那么该非码属性(组)就是该表的外键。
如果两个表出现主码对主码有参照关系,那么这两表就可以合并成一个表。
楼主定义的表DD中未定义主码,如果C就是主码,他对id有参照关系,那么这两个表是可以合并的。
回复
wangxuelid 2008-03-31
11
回复
-狙击手- 2008-03-31
晕,这样的结果 ,必须匹配


create table TT(id int identity(1,1),
a int not null,
b int,
constraint PK_TT primary key (id,a)
)
go
create table DD(c int,d int)
go

ALTER TABLE dd add CONSTRAINT dddd FOREIGN KEY (c,d) REFERENCES TT(id,a)


drop table dd,tt
回复
律己修心 2008-03-31
谢谢了
回复
-狙击手- 2008-03-31
tt表只有ID主键那是肯定行的,
我来试试复合
回复
律己修心 2008-03-31
TT主表里的主键不是一列

在这种情况下
在DD表里建外键去引用TT表里的ID列

能实现吗?
回复
ojuju10 2008-03-31

create table TT(id int identity(1,1),
a int,
b int,
constraint PK_TT primary key (id )--tt表只能一列作为主键
)

create table DD(c int foreign key references TT(id),d int)

回复
ojuju10 2008-03-31

create table DD(c int Foreign key references TT(id),d int)
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-31 04:49
社区公告
暂无公告