Hinweis: Diese Frage gilt speziell für HSQLDB und Informix.HSQLDB - Abfrage - ersten Datensatz einfügen, wenn nicht vorhanden
Ich möchte einen neuen Eintrag einfügen, wenn nicht in der Tabelle vorhanden ist, und ich weiß, dass wir die vorhandene Abfrage verwenden können basierend auf vorhandenen Eintrag einfügen.
Eg:
INSERT INTO test(column1)
(SELECT DISTINCT 3
FROM test
WHERE NOT EXISTS (SELECT * FROM test WHERE column1 =3));
Problem: Die EXISTIERT Zustand mit einer Unterabfrage in Kombination verwendet wird, und gilt als erfüllt werden, wenn die Unteranfrage mindestens eine Zeile. Dann können wir nur in einer SELECT-, INSERT-, UPDATE- oder DELETE-Anweisung verwenden.
Ihr INSERT sieht falsch aus. Wo sind die neuen Daten, die Sie einfügen möchten, wenn sie noch nicht existieren? – fredt
@fredt: In der Beispielabfrage sind die neuen Daten '3', die in der SELECT-Liste und in der WHERE-Klausel der EXISTS-Unterabfrage referenziert werden. –
Ich bin nicht klar, was Ihr Problem ist. Ihr 'Problem ist' Absatz umreißt, warum die INSERT-Anweisung das tut, was Sie sagen, was Sie tun wollen, damit ich nicht verstehe, wo ein Schluckauf ist. Gibt es ein anderes DBMS, das das Problem irgendwie anders behandelt? Wenn Sie über geeignete Primärschlüsseleinschränkungen verfügen, kann ein einfacher INSERT nicht eingefügt werden, wenn in der Tabelle bereits eine Zeile mit denselben Schlüsseldaten vorhanden ist. Sie müssen nur den Fehler ignorieren (Sie ignorieren eine bestimmte Fehlerbedingung, nicht alle). Sie könnten eine gespeicherte Prozedur verwenden, um das zu handhaben, wenn Sie dies wünschen. Bitte klären Sie Ihr Problem. –