PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Refaktorieren Sie Fremdschlüssel auf Felder

Du scheinst den falschen Weg zu gehen. Ihr ursprüngliches, normalisiertes Schema ist normalerweise überlegen. Wenn Sie Shop / Benutzer anzeigen müssen, erstellen Sie eine VIEW .

Aber Sie können Ihre Gründe haben, also hier ist:

UPDATE purchases p
SET   (shop, shop_user) = (s.name, s."user")
FROM   shop s
WHERE  s.id = p.shop_id;

Verwenden Sie nicht das reservierte Wort "user" als Identifikator.
Und "Name" ist selten ein guter Name , entweder.
Und varchar(255) in Postgres weist normalerweise auf ein Missverständnis hin.

Über varchar(255) :

  • Soll ich VARCHAR-Spalten eine beliebige Längenbegrenzung hinzufügen?
  • Irgendwelche Nachteile bei der Verwendung des Datentyps „Text“ zum Speichern von Strings?
  • Mehr Details im Handbuch.