MS SQL 服务器从列中提取整数,递增 1 并将数字加载回列
MS SQL Server Extract Integer from column, increment by 1 and load the number back into column
我有一个带有一列(整数)的 table。在 MS Sql Server 2005 存储过程中,我想获取该列中的值,将其递增 1 并将该列更新为递增值。此列是一个计数器,因此 table 中的每一行都有一个不同的计数器,即:我不能只在该列上放置一个触发器来自动递增它或类似的东西。我有下面列出的一些代码,但它所做的只是将列更新为 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;
有人能帮我找出我的代码哪里出错了吗?在此先感谢您提供的所有帮助。
您的代码不起作用的原因是这一行:
SELECT ControlNo = @c
这等同于:
SELECT @c as ControlNo
根据 documentation:
| column_alias = expression
您可能打算写:
SELECT @c = ControlNo
但不确定这里是否需要变量。您可以参考 SET
:
右侧的旧值
UPDATE MedicaidInterchange
SET ControlNo = ControlNo + 1
WHERE Interkey = @InterKey
我有一个带有一列(整数)的 table。在 MS Sql Server 2005 存储过程中,我想获取该列中的值,将其递增 1 并将该列更新为递增值。此列是一个计数器,因此 table 中的每一行都有一个不同的计数器,即:我不能只在该列上放置一个触发器来自动递增它或类似的东西。我有下面列出的一些代码,但它所做的只是将列更新为 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;
有人能帮我找出我的代码哪里出错了吗?在此先感谢您提供的所有帮助。
您的代码不起作用的原因是这一行:
SELECT ControlNo = @c
这等同于:
SELECT @c as ControlNo
根据 documentation:
| column_alias = expression
您可能打算写:
SELECT @c = ControlNo
但不确定这里是否需要变量。您可以参考 SET
:
UPDATE MedicaidInterchange
SET ControlNo = ControlNo + 1
WHERE Interkey = @InterKey