我正在使用 mysql Nodejs 包,但我只会将这个问题标记为 mysql,因为具有 mysql 知识的人应该能够帮助我。
这个问题更多的是关于寻找一种有效的方式来编写查询。
我有一个表,其复合键为 partID
、orderID
和 stageID
。
如果没有以前的复合键,我需要插入到这个表中,如果找到具有这些复合键的行,则更新其他字段。
我打算在这 3 列的条件下执行一个选择查询,然后在有结果的情况下执行更新,否则执行插入。
这是处理这种情况的最佳方式吗?抱歉,我对 SQL 数据库没有太多经验。
最佳答案
只需将组合键定义为 unique
或在其上创建唯一索引:
alter table t add constraint unq_t_3 unique (partID, orderID stageID);
如果您尝试插入具有重复键的行,则会出现错误。如果你想避免这个错误,使用on duplicate key update
:
insert into t (partID, orderID, stageID, . . .)
values (?, ?, ?, . . .)
on duplicate key update partID = values(partID);
on duplicate key
中的设置除了防止重复错误外不做任何事情。
关于mysql - 在插入之前检查组合键是否存在的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57136858/