【发布时间】:2020-12-16 12:08:58
【问题描述】:
我需要插入数据,除非该行中存在 2 个字段。以下是我当前的查询,它添加了所有有效的内容。
$sql = "INSERT INTO contact_sync_status (ghl_contact_email, ghl_contact_data, result, wp_user_id) VALUES ('$source->email', '$payload', 'success', $user->id)";
所以我尝试了以下方法使其成为有条件的:
$sql = "INSERT INTO contact_sync_status (ghl_contact_email, ghl_contact_data, result, wp_user_id) VALUES ('$source->email', '$payload', 'success', $user->id) WHERE NOT EXISTS (SELECT 1 FROM contact_sync_status WHERE ghl_contact_email = '$source->email' AND wp_user_id = $user->id)";
但我收到一个 SQL 语法错误,因为 WHERE NOT EXISTS 似乎不能与 INSERT 一起使用。我也尝试过在数据库中使用唯一索引,但这不是一个选项。
【问题讨论】:
-
首先进行完全独立的查询以查看它是否存在。
-
为什么不能选择唯一索引?这是做你想做的事情的公认(也是唯一有效的)机制。
-
您可以不通过先进行选择来保证防止重复。
-
@GrumpyCrouton 你有没有机会提供一个如何做到这一点的例子?第一个将是一个选择,但我将如何使用它?