我有一个查询,其中记录被添加到表通道。然后为每个记录分配一个channelID,它是表的PK,并自动递增。将记录添加到通道表后,我想将与该记录关联的字符串插入另一个称为通道关键字的表中。我的问题是我还需要传入上一个查询中创建的channelID作为channelskeywords表的insert语句的参数,但我不太清楚如何做到这一点。
IF @matchBy ='title'
BEGIN
insert into channels
(userID,matchTitle,matchTitleAbstract, fromMyPage)
values
(@userID,1,0,@fromMyPage)
END
IF @matchBy ='TitleAbstract'
insert into channels
(userID,matchTitle,matchTitleAbstract, fromMyPage)
values
(@userID,0,1,@fromMyPage)
BEGIN
IF (NULLIF(@keyword1, '')) IS NOT NULL
insert into channelsKeywords
答案 0 :(得分:0)
您可以通过
获取IDSelect Scope_Identity()
即:
insert into channels
(userID,matchTitle,matchTitleAbstract, fromMyPage)
values
(@userID,1,0,@fromMyPage)
select @ChannelID = Scope_Identity()
答案 1 :(得分:0)
尝试这样的事情
BEGIN
-- be sure to declare this same scope as the one whol will be using the value
DECLARE @CNT INT
insert into channels (userID,matchTitle,matchTitleAbstract, fromMyPage)
values (@userID,1,0,@fromMyPage)
SET @CNT = Scope_Identity() -- holds the value of the inserted ID
END
其他信息:
@@IDENTITY
返回在所有范围内为当前会话中的任何表生成的最后一个标识值。您需要小心,因为它跨越范围。您可以从触发器获取值,而不是当前的语句。
SCOPE_IDENTITY
返回为当前会话中的任何表和当前范围生成的最后一个标识值。一般来说你想用什么。
IDENT_CURRENT
返回在任何会话和任何范围内为特定表生成的最后一个标识值。这使您可以指定您想要该值的表,以防上述两个表格不是您需要的(非常罕见)。
<强> See also here 强>