Ho molti-a-molti tra foo
e bar
modellato come una tabella foo_bar
con foo_id
e bar_id
.Conversione di una relazione molti-a-molti a uno-a-molti in PostgreSQL
Vorrei ora modellare questo come uno-a-molti (che i miei dati consentono).
Ho aggiunto una colonna foo_id
a bar
ma ora desidero eseguire la migrazione dei miei dati. Quindi, voglio
UPDATE bar SET foo_id = f where id = b;
in cui ogni coppia f
e b
sono provenienti da
SELECT foo_id AS f, bar_id AS b FROM foo_bar;
E 'possibile fare questo in SQL (e in particolare PostgreSQL 9.0)?
So come eseguire i sub-SELECT in UPDATE quando c'è un solo valore, ma in questo caso non riesco a capire come farlo.
dovrebbe durare linea essere fb.bar_id = b.id? –
@JamesTauber: No. Non ci dovrebbe essere un 'id' nel modello. L'uso del nome colonna non descrittivo 'id' è un anti-pattern. La chiave primaria dovrebbe essere chiamata 'bar_id'. –
abbastanza giusto, era solo mappandolo alle specifiche della mia domanda –