[Oracle 10] Dynamisch kopieren kolommen (PL/SQL)

Pagina: 1
Acties:

  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 09-11 12:29
Beste GOT'ers,

Momenteel zijn we voor een testproject bezig met een aantal Procedures/Triggers te schrijven in Oracle 10 met PL/SQL.
We hebben een bepaalde tabel (Z1, hierna :old) die we willen synchroniseren met een andere tabel (Z2, :new).

We gebruiken daarvoor de volgende sql:
code:
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE TRIGGER T2a
BEFORE UPDATE ON Z1
FOR EACH ROW
BEGIN

DELETE FROM Z2
WHERE ID_ARTIKEL = :old.ID_ARTIKEL;

INSERT INTO Z2 VALUES (:new.ID_ARTIKEL, :new.LINKSTAT);

END T2a;
/


Dit werkt verder prima.
Echter nu willen we graag bereiken dat hij de kolommenlijst in de 'VALUES' van het INSERT statement automatisch opbouwd op basis van de :old tabel/row.
We hebben geen idee waar we naar moeten kijken vanwege onze beperkte ervaring met Oracle en/of PL/SQL.

Kunnen jullie ons de juiste richting induwen?

Verwijderd

select * from all_tab_columns where table_name = upper('Z1')

geeft je alle kolomnamen, dus die kun je gebruiken om je trigger te 'genereren' zodat je die trigger niet zelf moet schrijven. Runtime zou ik die tabel niet gebruiken om een insert niet al te kostelijk te maken.

Meer intelligente oplossingen heb ik echter niet aan te dragen :)