我有3张桌子:
用户,联系人和pay_roll。
所有表共享列user_id,这是主键,并且在所有这些表上自动递增,当我将新用户插入表“users”时,是否有办法向两个联系人添加空行和pay_roll然后稍后更新?
到目前为止我的SQL查询:
INSERT INTO dbo.users (fName, lName) VALUES ('Kieron', 'Oates')
答案 0 :(得分:2)
您可以使用insert的output子句并插入另一个表中,如下所示:
declare @otheruser table (fname varchar(10), lname varchar(10))
declare @user table (fname varchar(10), lname varchar(10))
insert into @user(fname, lname)
output inserted.fname, inserted.lname into @otheruser
values ('Kieron', 'Oates')
select * from @otheruser
select * from @user
对于空行,您可以使用如下:
create table #contact (userid int, fname varchar(10), addr varchar(10))
create table #user (userid int identity(1,1), fname varchar(10), lname varchar(10))
create table #pay_roll (userid int, pay money)
insert into #user(fname, lname)
output inserted.userid, null as fname, null as addr into #contact
values ('Kieron', 'Oates')
答案 1 :(得分:0)
你做错了;您的架构存在根本缺陷。 "孩子"表联系人和工资单依赖于用户表,并且不应将标识列用作用户的外键。从这些列中删除标识属性。由于很明显您要在用户和每个子表之间创建1:1关系,因此联系人和工资核算中的用户列应该是主键和外键。
不 - 你不添加"空白"要在以后填写的行。为什么?首先,你无法真正区分"空白"行和非空行而不对列的内容进行假设。这种方法只会导致眼泪和许多长时间的工作。