Eine Zeile in derselben Tabelle kopieren, ohne die 50+ Spaltennamen eingeben zu müssen (während 2 Spalten geändert werden)
Während meiner Arbeit, habe ich meistens zum kopieren von Zeilen bei änderung Ihrer primären Schlüssel, und geben Sie einen neuen Stempel und vielleicht eine änderung der Fremdschlüssel.
Das problem ist, ich will nicht zu geben, alle Spaltennamen dabei;
insert into table_name
select pk_seq.nextval,
'foreign-key',
col3,
col4...col51
from table_name
where pk_id = "original_primary_key"
Und wenn ich die * in der select-Anweisung, die ich nicht in der Lage sein zu aktualisieren, die ersten 2 Spalten...
Gibt es eine Möglichkeit, das zu tun, wie ich will, es zu tun?
InformationsquelleAutor der Frage Tolga E | 2010-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, es kann nicht viel weniger ausführlich, aber diese PL/SQL ist eine option:
InformationsquelleAutor der Antwort Tony Andrews
Basierend auf Tony ' s Antwort:
Wir wissen, dass höchstens eine Zeile zurückgegeben wird, da wir sind auf der Suche auf Primärschlüssel. Und die Annahme, dass sich ein Gültiger Schlüssel-Wert angegeben wird, mindestens eine Zeile zurückgegeben wird. So brauchen wir nicht die Schleife:
InformationsquelleAutor der Antwort Shannon Severance
Könnte man nur die Abfrage der data dictionary zu generieren, die die SQL für Sie.
Bekommen das Ergebnis dieser Abfrage, einfügen in die SQL-Anweisung, die Anpassung wie nötig, und voila.
InformationsquelleAutor der Antwort Jeffrey Kemp
Sorry - es ist ein alles oder nichts Angelegenheit.
Es gibt nichts, was zwischen
SELECT *
und Liste der spezifischen Spalten, es das eine oder das andere.InformationsquelleAutor der Antwort OMG Ponies
Können Sie erstellen eine 'temp' - Tabelle, update zwei Spalten und eine einfügen-wählen Sie aus diesem "temp" - Tabelle.
Eaxmple:
InformationsquelleAutor der Antwort TTT
Könnten Sie eine einfache gespeicherte Prozedur, die eine Tabelle name und die Verwendung des data dictionary schreibt die select-Anweisung text (text select). Dann kopieren, einfügen und Ändern.
InformationsquelleAutor der Antwort Jonathan