SQL获取id值并插入另一列

时间:2011-06-23 15:08:26

标签: sql insert scope-identity

我正在尝试创建一个sql语句,它将插入一个初始记录,检索新的id(一个自动编号主键)并将其插入表中的另一列作为defualt值。

这是我到目前为止所做的:

INSERT INTO users (first_name, last_name, email, password, shot, year, campus, subject,

 qual_level, job_title, blurb, presentions, offers, moderated, version_current,

 version_replace, salt, loggable) VALUES (@sfirst_name, @slast_name, @semail, @spassword,

 @sshot, @syear, @scampus, @ssubject, @squal_level, @sjob_title, @sblurb, @spresentions, 

@soffers, @smoderated, @scurrent_version, @sversion_replace, @ssalt, 1) SELECT 

SCOPE_IDENTITY() as NewId UPDATE users (version_replace) VALUES (NewId) WHERE id = NewId

这不能正常工作,我可以用一只手来纠正syntex

1 个答案:

答案 0 :(得分:1)

您的更新不正确

UPDATE 
    users 
SET 
    version_replace =  SCOPE_IDENTITY()

WHERE id = SCOPE_IDENTITY()

这是因为这句话

SELECT SCOPE_IDENTITY() as NewId

对以下陈述没有影响

如果需要,您还可以使用变量来存储NewID

DECLARE @NewID  int
SET @NewId =  SCOPE_IDENTITY()

UPDATE 
    users 
SET 
   version_replace =  @NewID  
WHERE id =@NewID 

如果您使用多行执行此操作,则可能需要查看OUTPUT Clause