SQL获取id值并插入到另一列中

SQL获取id值并插入到另一列中,sql,insert,scope-identity,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,

我试图创建一个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

你的更新不正确,应该是这样的

UPDATE 
    users 
SET 
    version_replace =  SCOPE_IDENTITY()

WHERE id = SCOPE_IDENTITY()
这是因为这句话

选择SCOPE\u IDENTITY()作为新ID

对以下声明没有影响

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

DECLARE @NewID  int
SET @NewId =  SCOPE_IDENTITY()

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

如果对多行执行此操作,您可能需要查看

我现在在将NewId(varchar)转换为int时出错。这很奇怪,因为两者都存储为int。您能在sql语句中转换数据类型吗?@Ysol8。是的,您可以使用
CAST
CONVERT
进行转换,但这听起来不对。我想你是无意中使用了一个返回GUIDThanks的函数,它工作起来很有魅力。我想我必须学习复杂的SQL。看起来像是节省时间。