pratico - postgresql italiano download




PostgreSQL: inserire da un'altra tabella (2)

Fornisci solo valori letterali in SELECT:

INSERT INTO TABLE1 (id, col_1, col_2, col_3)
SELECT id, 'data1', 'data2', 'data3'
FROM TABLE2
WHERE col_a = 'something';

Un elenco di selezione può contenere qualsiasi espressione di valore :

Ma le espressioni nell'elenco di selezione non devono fare riferimento a nessuna colonna nell'espressione di tabella della clausola FROM; possono essere espressioni aritmetiche costanti, per esempio.

E una stringa letterale è sicuramente un'espressione di valore.

Sto cercando di inserire dati in una tabella da un'altra tabella e le tabelle hanno solo una colonna in comune. Il problema è che TABLE1 ha colonne che non accettano valori nulli quindi non posso lasciarli vuoti e non posso ottenerli dalla TABLE2.

Ho TABLE1: id, col_1 (non null), col_2 (non null), col_3 (not null)

e TABELLA 2: id, col_a, col_b, col_c

quindi, come ho potuto inserire id da TABLE2 a TABLE1 e riempire il col_1-3 con stringhe hard coded come "data1", "data2", "data3"?

INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";

risulterà in:

ERRORE: il valore nullo nella colonna "col_1" viola il vincolo non nullo


Potresti usare la coalescenza:

insert into destination select coalesce(field1,'somedata'),... from source;




append