2011-06-23 63 views
0

我正在嘗試創建一個將插入inital記錄的sql語句,檢索新的id(自動編號主鍵)並將其插入表中的另一列以充當默認值。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 

這不是工作的是,我可以用一隻手來糾正了Syntex

回答

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 [email protected] 

如果你用多行這樣做,你可能會想看看沒有影響OUTPUT Clause

+0

我現在有一個錯誤將NewId(varchar)轉換爲int。這很奇怪,因爲兩者都存儲爲int。你可以在一個sql語句中轉換數據類型嗎? – YsoL8

+0

@ Ysol8。是的,你可以用'CAST'和'CONVERT',但這聽起來不對。我想你是不小心使用[NewID](http://msdn.microsoft.com/en-us/library/ms190348.aspx)函數,它返回一個GUID –

+0

謝謝 - 像魅力一樣工作。我想我必須學習複雜的SQL。看起來像節省時間。 – YsoL8

相關問題