mysql - 在插入之前检查组合键是否存在的有效方法

标签 mysql

我正在使用 mysql Nodejs 包,但我只会将这个问题标记为 mysql,因为具有 mysql 知识的人应该能够帮助我。

这个问题更多的是关于寻找一种有效的方式来编写查询。

我有一个表,其复合键为 partIDorderIDstageID

如果没有以前的复合键,我需要插入到这个表中,如果找到具有这些复合键的行,则更新其他字段。

我打算在这 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/

相关文章:

mysql - python中使用magic函数连接mysql时如何处理@at密码

java - 如何从类型为 map 的数据库中检索值

php - 使用 php 单击图像时显示详细信息

mysql - 使用位图字符串存储两个实体之间的映射

php - 表单发送验证

mysql - 使用 to_sql 时如何防止使用第一行 Pandas DataFrame 作为列名

PHP 和 MySQLi 查询总是返回 0

mysql - ORDER BY 团体优先权?

mysql - 尝试了解产品标签行为

mysql:顺序 ->限制 ->总和...可能吗?