![](/img/trans.png)
[英]On SQL INSERT can I use the identity column for part of the insert data in another column at the same time?
[英]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.