作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所有类似的问题都建议将一列完整复制到另一列的解决方案,但这不是我的要求。
基本上我会添加说员工,同时添加我可以选择让他们成为(新团队的)团队负责人。
有一个 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
列值。
但是您还可以使用其他一些方法。
您可以使用序列而不是身份。然后您将在插入之前知道该值,并且可以简单地在两列中使用它。
或者你可以只拥有 NULL
为 teamleadid
作为团队领导的员工的列。并可能使用 ISNULL(teamleadid, id)
计算结果作为计算列或在 SELECT
时间。
关于sql - 仅有时为同一插入中的另一列使用生成的标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50982821/
我想知道。是否有仅将按引用传递作为评估策略的语言? 最佳答案 我不知道什么是“评估策略”,但是Perl子例程调用仅通过引用传递。 sub change { $_[0] = 10; } $x =
我是一名优秀的程序员,十分优秀!