sql-server - 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;
有人可以帮我找出我的代码失败的地方吗?提前感谢您的任何帮助。
解决方案
您的代码不起作用的原因是这一行:
SELECT ControlNo = @c
这与以下内容相同:
SELECT @c as ControlNo
根据文档:
| column_alias = expression
你可能打算写:
SELECT @c = ControlNo
但不确定你是否需要一个变量。您可以参考右侧的旧值SET
:
UPDATE MedicaidInterchange
SET ControlNo = ControlNo + 1
WHERE Interkey = @InterKey
推荐阅读
- python-3.x - django urls 异常 NoReverseMatch
- android - Android 在通话过程中使用内置麦克风和蓝牙耳机作为具有高质量媒体协议的扬声器
- html - 转到上一页并激活切换
- c++ - 通用类标准时间独立模板秒表
- css - CSS - 选择所有类以前缀开头的元素
- python - 使用 google/protobuf/empty.proto 在没有参数的情况下调用 python grpc 方法期间的 TypeError
- react-native - 在 ios 上的 react-native-share 中,我们需要知道为什么共享选项弹出屏幕会立即被关闭?
- c - 内联和标题守卫之间的区别
- javascript - 如何将文件或文件夹移动到 google drive api 中的另一个文件夹?
- c++ - 如何在不同的 QThreads 中运行函数