我正在尝试创建一个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
答案 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