Creare una tabella solo se non esiste

In Postgres come posso scrivere una condizione che mi crei una tabella sul database solo se questa non è già esistente? Se potete scrivere l'istruzione sql di come si fà mi sareste di grande aiuto.

Risolta 4
PostgreSQL 20-06-2018 4 Risposte 1601 Visite 0

Risposte ( 4 approvate )

  1. Caterina Stoletti
    +4
    20-06-2018 16:25:12
    Rispondi

    Devi utilizzare la condizione IF NOT EXISTS in questo modo

    CREATE TABLE IF NOT EXISTS mySchema.myTable
    (
      id integer
      ...
    )

    che ti creerà la tabella 'myTable' nello schema 'mySchema' solo se la tabella non esiste.

  2. Alberto Orfiesi
    +1
    20-06-2018 16:38:58
    Rispondi

    Puoi verificare il valore ritornato da una select sull'esistenza o meno della tabella per poi valutare se lanciare l'istruzione sql CREATE TABLE o meno, in questo modo

    -- schema independente:
    SELECT true FROM pg_tables WHERE tablename='my_table_name';
    
    -- schema dipendente:
    SELECT true FROM pg_tables WHERE tablename='my_table_name' AND schemaname='my_schema_name';

    Se la SELECT corrisponde, ossia trova la tabella verrà ritornato il valore true (vero) diversamente otterrai un dataset vuoto e puoi eseguire la CREATE TABLE

  3. Emanuele Segatti
    0
    20-06-2018 16:44:12
    Rispondi

    La migliore risposta (soluzione) è quella che ti ha dato 'Caterina Stoletti', solo che fai attenzione che la CREATE TABLE IF NOT EXISTS funziona solo dalla versione di PostgreSQL 9.1 in poi, e puoi eseguirla anche in maniera indipendente dallo schema.

  4. Marco Biellesi
    -1
    20-06-2018 16:30:55
    Rispondi

    Lancia la tua CREATE TABLE senza crearti grossi problemi, se questa non è presente nel database allora la tabella verrà creata, diversamente la tabella esistente non sarà modificata, inoltre puoi sempre verificare il valore ritornato dalla tua query SQL per vedere se la tabella esiste o meno quando esegui la CREATE TABLE

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Giovanni Campedi

Giovanni Campedi

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva