首页 > 解决方案 > MS SQL Server 从列中提取整数,递增 1 并将数字加载回列

问题描述

我有一个带有列(整数)的表。在 MS Sql Server 2005 存储过程中,我想获取该列中的值,将其递增 1 并将该列更新为递增值。此列是一个计数器,因此表中的每一行都会有一个不同的计数器,即:我不能只在列上放置一个触发器来自动递增它或类似的东西。我有一些如下所列的代码,但它所做的只是将列更新为 1。

SELECT ControlNo = @c
    FROM MedicaidInterchange
    WHERE 1=1
    AND Interkey = @InterKey;

    SET @c = @c +1;

    UPDATE MedicaidInterchange
    SET InterDate = @d
    , InterTime = @t
    , ControlNo = @c
    WHERE 1=1
    AND Interkey = @InterKey;

有人可以帮我找出我的代码失败的地方吗?提前感谢您的任何帮助。

标签: sql-serveretl

解决方案


您的代码不起作用的原因是这一行:

SELECT ControlNo = @c

这与以下内容相同:

SELECT @c as ControlNo

根据文档

| column_alias = expression  

你可能打算写:

SELECT @c = ControlNo

但不确定你是否需要一个变量。您可以参考右侧的旧值SET

UPDATE  MedicaidInterchange
SET     ControlNo = ControlNo + 1
WHERE   Interkey = @InterKey

推荐阅读