说我有:
create table Post(
PostID int not null constraint PK_Post primary key clustered,
Title nvarchar(200) not null
) on [primary]
create table PostDetail(
PostID int not null constraint PK_PostDetail primary key clustered,
Text nvarchar(max) null
) on [primary]
如何使PostDetail.PostID成为引用Post.PostID的FK?
答案 0 :(得分:2)
使用:
ALTER TABLE POSTDETAIL
ADD CONSTRAINT fk_post
FOREIGN KEY (postid) REFERENCES POST (postid)
虽然我必须说你列出的内容看起来是一对一的关系 - 但只有一个POSTDETAIL
记录与POST
记录相关联。你不妨使用:
create table Post(
PostID int not null constraint PK_Post primary key clustered,
Title nvarchar(200) not null,
Text nvarchar(max) null
) on [primary]
答案 1 :(得分:2)
如果你想建立一个正确的1-1关系,那就更难了。目前,您仍然可以在[Post]中找到[PostDetail]中没有条目的条目。
如果你想更进一步,你可能想要研究Tony Rogerson最近对这个问题的调查,http://sqlblogcasts.com/blogs/tonyrogerson/archive/2010/01/23/how-to-create-a-one-to-one-relationship-in-sql-server-using-dri-triggers-and-views.aspx
答案 2 :(得分:1)
事后:
alter table PostDetail
add constraint FK_PostDetail_Post
foreign key (PostID) references Post (PostID)
或表def:
create table PostDetail(
PostID int not null constraint PK_PostDetail primary key clustered,
Text nvarchar(max) null,
constraint FK_PostDetail_Post foreign key (PostID) references Post (PostID)
) on [primary]
答案 3 :(得分:1)
使用以下字段创建新表。
标题ID(PK,FK - 标题表) Publisher_ID(PK,FK - Pub表) 有效 - 位 状态(无限制)