Ich versuche mich gerade darin, Kopien von (komplexeren, im Sinn von:
mehrere ueber foreign keys verbundene Tabellen umfassende) Datensaetzen
direkt in der Datenbank zu erstellen (das alles in PostgreSQL).
Der erste Schritt dazu ist die Erstellung des Records _einer_ Tabelle:
| # INSERT INTO foo (SELECT * FROM foo WHERE id=1);
| ERROR: duplicate key value violates unique constraint "foo_pkey"
Ok, so weit, so klar. Was ich nun aber definitiv NICHT will, ist alle
Felder einzeln aufzuzaehlen - das wuerde unuebersichtlich gross und auch
deutlich schlechter wartbar.
Also definiere ich den primary key als "deferrable" und mache:
| # BEGIN;
| # INSERT INTO foo (SELECT * FROM foo WHERE id=1);
Klappt ja wunderbar. Der zweite Schritt waere nun, dem neuen Record eine
eigene Id zuzuweisen:
| # UPDATE foo SET id=nextval('foo_id_seq'::regclass) WHERE ?!?;
Tja. Aber was schreibe ich nun in die WHERE-Bedingung? Es existieren ja
zwei identische Records, aber nur einer davon soll aktualisiert werden...
Hat jemand Ideen dazu?
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike
Stefan - das antiquiertste Ansinnen des Jahrtausends.
(Sloganizer)