Heim  >  Fragen und Antworten  >  Hauptteil

Führen Sie eine Einfügung in die Datenbank durch, um doppelte Schlüsselfehler zu erkennen

Meine Anwendung fügt möglicherweise doppelte Primärschlüsseldaten ein. Ich bezweifle, was der effizienteste Weg ist, vor dem Einfügen zu prüfen, ob der Schlüssel bereits vorhanden ist, oder einfach einzufügen und die Bank einen Fehler zurückgeben zu lassen und ihn dann zu behandeln? Welches hat weniger Auswirkungen? Danke

P粉920835423P粉920835423205 Tage vor386

Antworte allen(1)Ich werde antworten

  • P粉362071992

    P粉3620719922024-03-29 07:32:06

    最高效的方法是使用带有 ON DUPLICATE KEY UPDATE 子句的 INSERT 查询。

    如果主键不存在,这将插入一条新记录;如果主键已经存在,则仅更新主键记录的指定字段(不会抛出错误)。

    例如,如果 user_id 不存在,以下代码将创建一个新用户。如果user_id确实存在,它只会更新last_visited_date

    INSERT INTO users
        (user_id, last_visited_date)
    VALUES
        ({user_id}, UTC_TIMESTAMP())
    ON DUPLICATE KEY UPDATE
        last_visited_date= VALUES(last_visited_date)

    这种方法允许您通过一个查询创建新记录并更新现有记录,从而无需检查现有主键。

    注意:如果主键是自增索引,MySQL 将 ON DUPLICATE UPDATE 子句视为与 INSERT 查询相同,因此下一个 ID 将增加 < code>1 只要主键已经存在。

    如果您不想使用 ON DUPLICATE KEY UPDATE 子句,捕获现有主键的错误将是性能最佳的方法。

    Antwort
    0
  • StornierenAntwort