是否存在用于指定「保持列值不变」的SQL关键字?
如何在UPDATE语句中指定列保持原值(必须列出该列的场景)
好问题!我太懂这种场景了——有时候因为要复用SQL模板、动态生成语句等原因,你没法直接把不需要更新的列从语句里删掉,这时候确实需要一种方式来明确指定“让这个列保持当前值不变”。
下面是最靠谱的解决方案:
跨数据库通用方案:直接将列赋值给自己
这是所有SQL数据库都支持的方法,你只需要把目标列的赋值写成COL_A = COL_A就行。数据库的查询优化器会自动识别这种“无意义”的赋值操作,不会对该列执行任何实际更新,但完美满足了你必须列出该列的要求。
示例语句:UPDATE TABLE SET COL_A = COL_A, COL_B = 'hello' WHERE ID = 123不用担心性能问题,优化器会直接跳过这个赋值步骤,效果和你把COL_A从语句里移除完全一样。
有没有专用的SQL关键字?
很遗憾,SQL标准里并没有定义专门用来指定“保持原值”的关键字(DEFAULT是调用列的默认值,和保持原值完全是两回事)。少数数据库可能有一些扩展语法,但通用性极差,远不如上面的通用方案实用。
举个实际场景的例子:如果你的系统需要生成通用的UPDATE模板,包含表的所有列,那么对于不需要修改的列,你只需要填充列名=列名,需要修改的列填充对应的值就可以了,不用额外判断要不要移除列,非常方便。
内容的提问来源于stack exchange,提问作者user3163495
相关产品推荐
相关产品推荐

