我正在设计用于存储网站用户帐户的表格。该网站将有两种类型的帐户: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的值,只需一次插入即可完成所有操作?
感谢您的帮助!
答案 0 :(得分:2)
例如
declare @id int
insert Accounts values('a@b.com','pass','bla',1)
select @id = SCOPE_IDENTITY()
insert SellerAccounts values(@id,1)
select * from SellerAccounts