CREATE UNIQUE INDEX, WENN NICHT VORHANDEN in postgreSQL
Plese, die ich gerne tun würde in PostgreSQL so etwas wie
CREATE UNIQUE INDEX IF NOT EXISTS
Irgendeine Idee?
Dies ist möglich, da Postgres 9.5: postgresql.org/docs/9.5/static/sql-createindex.html
InformationsquelleAutor user3429578 | 2014-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie überprüfen, ob ein index mit dem angegebenen Namen existiert, die von dieser Anweisung.
Wenn Ihr index-name
some_table_some_field_idx
Ab Postgres 9.5 Sie können sogar
InformationsquelleAutor Torge
Nur ein weiterer ready-to-use-Lösung.
PostgreSQL v9.0+:
PostgreSQL v9.5+:
InformationsquelleAutor volvpavl
Ich gewickelt habe a_horse_with_no_name code mit PLSQL-Funktion für eine bequemere Nutzung. Ich hoffe, jemand findet es nützlich.
Verwendung:
wählen Sie create_index('my_table', 'my_index_name', 'id');
was ist mit index über mehrere Spalten?
InformationsquelleAutor Kragh
Müssen Sie einige prozeduralen code für diese, so etwas (ungetestet!):
Ich bin damit einverstanden, aber dann, ein
create index if not exists ...
(wenn es solch eine syntax) würde nicht überprüfen, die.Es wäre eine syntax Haken ala
create index [aa] on bb(cc,dd) WHERE NOT EXISTS ( select ... FROM catalogs xx WHERE (something with {bb,cc,dd} ) );
Und es ist immer noch das problem mit den einzigartigen/non-unique-Indizes, die dieselben {bb,cc,dd} - Werte. Und index-Methoden...InformationsquelleAutor a_horse_with_no_name
Wenn Sie stecken geblieben sind, die in früheren Versionen, ich würde empfehlen, nicht mit zählen, sondern nur die Abfrage direkt in deiner if-Bedingung. Macht den code einfacher. Sie können versuchen, so etwas wie dieses:
InformationsquelleAutor Joao Esperancinha
Andere Lösung, die Unterstützung für mehrere Spalten-index, basierend auf dem @Kragh Antwort
und dann können Sie es verwenden, wie jede andere pg-Funktion:
select create_index('events_timestamp_type_idx', 'events', 'timestamp', 'type');
InformationsquelleAutor Feki Zied