所有类似的问题都提出了将一列完整复制到另一列的解决方案,但这不是我的要求。
基本上,我要说的是雇员,同时我还可以选择使他们成为(新团队的)团队负责人。 有一个Teamlead ID列,用于存储每个员工的Teamlead的员工ID。
因此,在添加将要成为团队负责人的员工时,其“团队领导”列应包含他刚刚生成的员工ID。
是否可以一次插入?有人说值的生成是在执行插入之后完成的。我不确定如何进行。
编辑:我没有一个插入的作品。现在,我要像这样插入和更新:
declare @TLID int
CREATE TABLE employees (
Id int NOT NULL IDENTITY (1, 1),
Name varchar(255),
TeamLeadID int
);
if(@isTeamLead=1) --stored procedure parameter
begin
insert into employees(name)
values('Mark')
select @TLID=SCOPE_IDENTITY()
update employees set TeamLeadID=@TLID where id=@TLID
end
else
begin
insert into employees(name,TeamLeadID)
values('Mark',16)
end
想知道单个插入是否可以在第一种情况下工作。
答案 0 :(得分:4)
没有,您不能一次插入。
您需要先进行插入,然后再更新回同一行,以将其他列值设置回刚插入的IDENTITY
列值。
但是您可以使用其他一些方法。
您可以使用序列而不是标识。然后,您将在插入之前知道该值,并且可以在两列中简单地使用它。
或者,对于团队领导的员工,您只需在NULL
列中输入teamleadid
。并可能使用ISNULL(teamleadid, id)
作为计算列或在SELECT
时计算结果。