BuyerAccounts和SellerAccounts表都引用了Accounts Table。创建帐户INSERT

时间:2011-06-04 12:13:33

标签: sql-server sql-server-2008 database-design

我正在设计用于存储网站用户帐户的表格。该网站将有两种类型的帐户:BuyerAccounts和SellerAccounts。我的方法是拥有一个主帐户表,该表将存储两种帐户类型共有的信息,然后为BuyerAccounts和SellerAccounts分别创建一个表。

这是基本设置..

create table Accounts 
(
UserID_PK int identity not null primary key,
Email varchar(50) not null unique,
UserPassword varchar(50) not null,
Salt varchar(50) not null,
AccountType tinyint not null,
);

create table SellerAccounts
(
SellerID_PK int not null primary key foreign key references Accounts(UserID_PK),
SellerColumn int
);

create table BuyerAccounts
(
BuyerID_PK int not null primary key foreign key references Accounts(UserID_PK),
DeliveryAddress string,
BuyerColumn string 
);

SellerAccounts和BuyerAccounts中的每一个都有一个主键,它也是引用帐户表主键的外键。

到目前为止这对我来说似乎都没问题,但我是初学者所以请说如果到目前为止我做错了什么或者做错了。

创建帐户时,我想在帐户中创建记录,并在BuyerAccounts或SellerAccounts中创建记录。

我该怎么做?我将使它成为一个存储过程,但我主要关注的是如何将INSERT插入到两个链接的表中。假设正在创建BuyerAccount。帐户创建是否必须分为两个INSERTS?首先进入帐户,以便知道也是BuyerAccounts的BuyerID_PK的帐户的UserID_PK,然后将其余的帐户信息插入到BuyerAccounts中?这是怎么回事?

如何编写一个返回UserID_PK的INSERT,以便我将其用于第二次插入?或者甚至更好的SQL Server可以做一些聪明的事情,只为我计算出UserID_PK和BuyerID_PK的值,只需一次插入即可完成所有操作?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

使用scope_identity()

例如

declare @id int

insert Accounts values('a@b.com','pass','bla',1)
select @id = SCOPE_IDENTITY()

insert SellerAccounts values(@id,1)

select * from SellerAccounts