【发布时间】:2019-03-09 23:09:06
【问题描述】:
我有一个工作插入到 DB2,在脚本中使用 PHP 参数。它就像我想要的那样工作,但我正在尝试修复它,这样我就不必每次都截断和重建。如果我的唯一键字段已经存在,我想简单地更新我的最后 2 个字段。
插入:
INSERT INTO testSchema.metrics (cust, item, material, color, group, group2, sales, score )
VALUES (
:cust_id,
:item,
:material,
:color,
:group,
:group2,
:sales,
:score
)
我对 cust_id、item、material 和 color 有一个唯一的键约束,所以我基本上是在尝试进行 UPSERT,但在 DB2 中。
我知道我可以在 DB2 中使用 MERGE,并且我已经开始使用这里,但我只是对如何充实它感到困惑,特别是因为我使用的是脚本中的参数。
这是我的伪合并:
MERGE INTO testSchema.metrics as m
USING // I guess I would need all of my parameters here?
ON :cust_id, :item, :material, :color
WHEN MATCHED THEN
UPDATE SET sales = :sales, score = :score
WHEN NOT MATCHED THEN
INSERT (cust, item, material, color, group, group2, sales, score )
VALUES (
:cust_id,
:item,
:material,
:color,
:group,
:group2,
:sales,
:score
);
我觉得这是基本想法,但我很困惑如何修复参数的 USING 和 ON 行。
我只是想说(如果一行与 cust_id、item、material 和 color 匹配,则使用新的销售额和分数进行更新。否则,插入)
【问题讨论】: