簡體   English   中英

有時僅將生成的標識用於同一插入中的另一列

[英]Use generated identity for another column within the same insert only sometimes

所有類似的問題都提出了將一列完整復制到另一列的解決方案,但這不是我的要求。

基本上,我要說的是員工,在添加的同時我可以選擇使他們成為(新團隊的)團隊負責人。 有一個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列值。

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

您可以使用序列而不是標識。 然后,您將在插入之前知道該值,並且可以在兩列中簡單地使用它。

或者,對於作為團隊領導的員工,您可以在teamleadid列中使用NULL 並可能使用ISNULL(teamleadid, id)作為計算列或在SELECT時計算結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM