2 Stimmen

SQL: Einfügen eines Feldes, das bereits existiert

Ich habe eine Tabelle mit einem eindeutigen Feld (einer URL). Was wäre die beste Vorgehensweise, wenn ich versuche, eine URL in die Tabelle einzufügen?

  • über den Code prüfen, ob er existiert und nicht einfügen, wenn dies nicht der Fall ist

  • einfach einfügen und sich nicht daran stören den Fehler, der entsteht, wenn die Url bereits vorhanden ist

  • einfügen ignorieren

4voto

Yoko Zunna Punkte 1784

Versuchen Sie dies....

MySQL verfügt über ein spezielles Konstrukt für diesen Zweck. Nehmen Sie an, dass die Spalte "Vorname" unten UNIQUE ist:

INSERT INTO users (FirstName, RollNumber) VALUES ('Hiu', '12')
ON DUPLICATE KEY UPDATE RollNumber= '12'

Die Anweisung "ON DUPLICATE KEY" funktioniert nur bei PRIMARY KEY und UNIQUE-Spalten.

2voto

delphist Punkte 4387
INSERT INTO `table` (`url`) VALUES ('http://example.com') ON DUPLICATE KEY UPDATE `url`='http://example.com'

http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

2voto

Frank Heikens Punkte 105033

Ignorieren Sie den Fehler, wenn das Einfügen fehlschlägt. Ein Select ist nutzlos. Gleichzeitige Benutzer können eine Mikrosekunde später einen neuen Wert einfügen und das Ergebnis Ihres Select ist wertlos.

0voto

Ian Wood Punkte 6429

WENN Sie die ID der Zeile für die Verwendung als Fremdschlüssel an anderer Stelle benötigen...

INSERT INTO
    `table`
    (`url`)
VALUES
    ('http://example.com')
ON DUPLICATE KEY UPDATE
    `id` = `id`

oder

INSERT INTO
    `table`
    (`url`)
VALUES
    ('http://example.com')
ON DUPLICATE KEY UPDATE
    `id` = `id` = LAST_INSERT_ID(`id`)

Beides funktioniert - ich bin nicht sicher, was ratsam ist - wahrscheinlich das Letztere.

0voto

tomahoax Punkte 1

Vielleicht könnte die Verwendung von REPLACE Ihnen helfen, dies zu handhaben: http://dev.mysql.com/doc/refman/5.0/en/replace.html ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X