Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 以原子方式递增整数,并根据结果更新另一列_Sql - Fatal编程技术网

Sql 以原子方式递增整数,并根据结果更新另一列

Sql 以原子方式递增整数,并根据结果更新另一列,sql,Sql,我有下表 工作 我在多线程环境中运行此查询,因此我必须小心操作不会相互影响 问题: 在一个SQL命令中(如果可能),我想: 增加“成品零件” 如果完工零件=总零件,则将“状态”设置为“就绪” 仅MySQL较短版本: UPDATE foo_table SET FINISHED_PARTS = FINISHED_PARTS + 1, STATUS = IF(FINISHED_PARTS + 1 = TOTAL_PARTS, 'ready', STATUS) WHERE ... 谢谢

我有下表

工作 我在多线程环境中运行此查询,因此我必须小心操作不会相互影响

问题: 在一个SQL命令中(如果可能),我想:

  • 增加“成品零件”
  • 如果完工零件=总零件,则将“状态”设置为“就绪”
  • 仅MySQL较短版本:

    UPDATE foo_table
    SET
        FINISHED_PARTS = FINISHED_PARTS + 1,
        STATUS = IF(FINISHED_PARTS + 1 = TOTAL_PARTS, 'ready', STATUS)
    WHERE ...
    

    谢谢-我正在使用Postgres,应该已经指定了。我现在正在试验,会让你知道什么最终会起作用。谢谢
    UPDATE foo_table
    SET
        FINISHED_PARTS = FINISHED_PARTS + 1,
        STATUS = CASE WHEN FINISHED_PARTS + 1 = TOTAL_PARTS THEN 'ready' ELSE STATUS END
    WHERE ...
    
    UPDATE foo_table
    SET
        FINISHED_PARTS = FINISHED_PARTS + 1,
        STATUS = IF(FINISHED_PARTS + 1 = TOTAL_PARTS, 'ready', STATUS)
    WHERE ...