Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#4

Re: [SQL] Datensatz kopieren

  Alt 3. Dez 2008, 14:38
Hallo,

kenne Firebird nicht.

Bei Oracle oder SQL-Server täte ich ins Dictionary schauen und mir dort aus den Einträgen zur Laufzeit das passende Statement bauen, mit Ausnahme der Spalten, bei denen ich selbst was ändern möchte.

Unter SQL-Server könnte das ungefähr so aussehen:

SQL-Code:
select 'insert into tabelle (ID '
union all
select ' ,' + column_name from information_schema.columns where table_name like 'tabelleand column_name <> 'ID'
union all
select ') select 4 as ID'
union all
select ',' + column_name from information_schema.columns where table_name like 'tabelleand column_name <> 'ID'
union all
select 'from tabelle where id = 3'
Wenn Du Dir nun das Ergebnis dieses SQL nimmst, solltest Du das Insert-Statement erhalten, das Du wünschst.
SQL-Code:
insert into tabelle (ID
 ,name
 ,vorname
 ,beruf
) select 4 as ID
,name
,vorname
,beruf
from tabelle where id = 3
Und wenn Du neue Spalten in die Tabelle einfügst, so ändert sich das Ergebnis der ersten Abfrage um die entsprechenden Spalten und passt sich somit an Dein geändertes Datenmodell an.

Unter Oracle haben wir mal ein System gebaut, dass permanenten Änderungen des Datenmodells unterworfen war und ist. Diese Routinen sind nun seit etwa 5 Jahren im Einsatz und mussten bisher nicht einmal angepasst werden.
  Mit Zitat antworten Zitat