0

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

这是我到目前为止所拥有的:

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

这不能按原样工作,我可以用手来纠正语法

4

1 回答 1

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条款

于 2011-06-23T15:12:15.703 回答