求sql一对一关系的建表语句

歪歪 2009-02-26 11:31:19
如一对多关系的建表语句如下
create database TestDb

use TestDb

create table MainTable
(
KeyId int identity(1,1) Primary Key,
UserName nvarchar(50) Not null
)

create table SubTable
(
ArtId int identity(1,1) Primary Key,
KeyId int foreign key references MainTable(KeyId), /* 建立外键 */
ArtTitle nvarchar(50) not null
)

求一对一的建表语句
...全文
597 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
歪歪 2009-02-26
  • 打赏
  • 举报
回复
dawugui 的方案应该是可行的,但是我不想把主键设置在外键上,因为有其他字段需要使用,还有另外的方案吗,除了程序控制和触发器控制
歪歪 2009-02-26
  • 打赏
  • 举报
回复
Happy_Stone 貌似没达到效果,从表里面可以有多条和主表对应的数据嘛

我希望实现这样个功能

主表:用户基本表
从表:用户的扩展信息表

加从表数据的时候主表里面必须有对应的一条记录,而且从表只能有一条记录和主表的那条记录相对应,主表可以单独添加不必考虑从表里面是否有对应的数据

htl258_Tony 2009-02-26
  • 打赏
  • 举报
回复
不理解,帮顶
快乐_石头 2009-02-26
  • 打赏
  • 举报
回复


create table MainTable
(
KeyId int identity(1,1) Primary Key,
UserName nvarchar(50) Not null
)

create table SubTable
(
ArtId int identity(1,1) Primary Key,
KeyId int foreign key references MainTable(KeyId)on delete cascade on update cascade, /* 建立外键 */
ArtTitle nvarchar(50) not null
)
dawugui 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dawugui 的回复:]
一对一?

这个是程序控制的,建表语句实现不了这个控制.
[/Quote]

把SubTable表KeyId做为主键.不要用ArtId了.
dawugui 2009-02-26
  • 打赏
  • 举报
回复
一对一?

这个是程序控制的,建表语句实现不了这个控制.
歪歪 2009-02-26
  • 打赏
  • 举报
回复
自己先顶一下,多谢了

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧