【问题标题】:How to increment row values by 1 when inserting插入时如何将行值增加1
【发布时间】:2020-06-02 10:38:45
【问题描述】:

我有一张名为LocationProduct的表,其结构如下,

+--------------+-------------+-----------+
| FkLocationId | FkProductId | SortValue |
+--------------+-------------+-----------+
| 1            | 100         | 1         |
+--------------+-------------+-----------+
| 1            | 101         | 2         |
+--------------+-------------+-----------+
| 1            | 102         | 3         |
+--------------+-------------+-----------+
| 1            | 103         | 4         |
+--------------+-------------+-----------+
| 1            | 104         | 5         |
+--------------+-------------+-----------+
| 1            | 105         | 6         |
+--------------+-------------+-----------+
| 2            | 100         | 1         |
+--------------+-------------+-----------+
| 2            | 101         | 2         |
+--------------+-------------+-----------+
| 2            | 102         | 3         |
+--------------+-------------+-----------+
| 2            | 103         | 4         |
+--------------+-------------+-----------+
| 2            | 104         | 5         |
+--------------+-------------+-----------+
| 2            | 105         | 6         |
+--------------+-------------+-----------+

现在我需要在插入新行时将SortValue 列的值加一。例如,

INSERT INTO BranchServices(FkBranchId,FkServiceId,SortValue)
VALUES(1,106,1)

我需要将FkLocationId = 1相关的SortValue更新一,我需要如下输出,

+--------------+-------------+-----------+
| FkLocationId | FkProductId | SortValue |
+--------------+-------------+-----------+
| 1            | 100         | 2         |
+--------------+-------------+-----------+
| 1            | 101         | 3         |
+--------------+-------------+-----------+
| 1            | 102         | 4         |
+--------------+-------------+-----------+
| 1            | 103         | 5         |
+--------------+-------------+-----------+
| 1            | 104         | 6         |
+--------------+-------------+-----------+
| 1            | 105         | 7         |
+--------------+-------------+-----------+
| 1            | 106         | 1         |
+--------------+-------------+-----------+

在这里你可以看到我将每条旧记录的 SortValue 更新了一个。我该怎么做?

【问题讨论】:

    标签: sql-server sql-update sql-insert


    【解决方案1】:

    在一个事务中首先UPDATE 值然后执行INSERT

    UPDATE branchservices
           SET sortvalue = sortvalue + 1
           WHERE sortvalue >= 1;
    
    INSERT INTO branchservices
                (fkbranchid,
                 fkserviceid,
                 sortvalue)
                VALUES (1,
                        106,
                        1);
    

    【讨论】:

    猜你喜欢
    • 2019-10-21
    • 2016-09-09
    • 1970-01-01
    • 2018-11-28
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多