gpt4 book ai didi

sql - 仅有时为同一插入中的另一列使用生成的标识

转载 作者:行者123 更新时间:2023-12-04 18:24:36 26 4
gpt4 key购买 nike

所有类似的问题都建议将一列完整复制到另一列的解决方案,但这不是我的要求。

基本上我会添加说员工,同时添加我可以选择让他们成为(新团队的)团队负责人。
有一个 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

想知道单个插入是否适用于第一种情况。

最佳答案

不,你不能用一个插入来做到这一点。

您需要插入然后更新回同一行以将另一列值设置回刚刚插入的 IDENTITY列值。

但是您还可以使用其他一些方法。

您可以使用序列而不是身份。然后您将在插入之前知道该值,并且可以简单地在两列中使用它。

或者你可以只拥有 NULLteamleadid作为团队领导的员工的列。并可能使用 ISNULL(teamleadid, id)计算结果作为计算列或在 SELECT时间。

关于sql - 仅有时为同一插入中的另一列使用生成的标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50982821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com