不更改值的UPDATE语句

时间:2020-05-29 07:08:05

标签: mysql sql

当前,我正在使用node连接器使用express库开发mysql。因此,很可能我正在使用字符串文字SQL Query

现在,我已经实现了一个设计,其中我在查询中确实有一个常数公式。

表结构:

╔═══╦═════════════════════╦═══════════════╗
║   ║ Field Name          ║ Type          ║
╠═══╬═════════════════════╬═══════════════╣
║ 1 ║ groupLevel          ║ varchar       ║
║ 2 ║ insideBranchAccess  ║ boolean       ║
║ 3 ║ outsideBranchAccess ║ boolean       ║
║ 4 ║ ipadFunctionID      ║ varchar       ║
║ 5 ║ createdBy           ║ varchar       ║
║ 6 ║ approvedBy          ║ varchar       ║
╚═══╩═════════════════════╩═══════════════╝

SQL查询:

INSERT INTO iPadFunctionAccess 
(groupLevel, insideBranchAccess, outsideBranchAccess, ipadFunctionID, createdBy, approvedBy) 
VALUES 
?
ON DUPLICATE KEY UPDATE 
insideBranchAccess = VALUES(insideBranchAccess), 
outsideBranchAccess = VALUES(outsideBranchAccess), 
updatedBy = VALUES(createdBy);

因此?是我插入数据的地方。我插入的样本数据是这个

(5, false, true, 'IIU.A05', 'SYSTEM', 'SYSTEM') 

实际数据库: insert event

我从应用程序中获取的示例数据是这个。

[
    {
        "id": "DEP.A03",
        "groupLevel": "5",
        "insideBranchAccess": true,
        "outsideBranchAccess": true
    },
    {
        "id": "DEP.S02",
        "groupLevel": "5",
        "insideBranchAccess": true
    },
    {
        "id": "DEP.S04",
        "groupLevel": "5",
        "outsideBranchAccess": true
    }
]

如您所见,insideBranchAccessoutsideBranchAccess是可选的。

我看到了这个answer,所以我想到了这种查询。因此,如果我只得到insideBranchAccess我的查询应该是这样

(5, true, outsideBranchAccess, 'IIU.A05', 'SYSTEM', 'SYSTEM')

反之亦然。

实际数据库: enter image description here

但是,当我这样做时,即使来自数据库的先前数据是outsideBranchAccessfalse也总是返回到true。有什么想法吗?

MySQL小提琴:HERE

0 个答案:

没有答案