Database omgeving: Oracle 10g.
Om het probleem te versimpelen heb ik dit voorbeeld gemaakt.
We hebben de volgende tabellen:
Automodel tabel
Onderdeel tabel
Koppel tabel
Relaties:
Automodel 1 ----- 0..* Koppel
Koppel * ---- 0..* Onderdeel
En het is de bedoeling dat er een nieuw automodel wordt toegevoegd met bijbehorende relaties met de onderdelen. Nadat deze is toegevoegd door een extern (closed source) programma moet een trigger gestart worden die de gegevens weer bij elkaar verzameld.
Met deze gegevens wordt een object in pl/sql gevuld. Dit object bevat dan alle gegevens van het automodel en dient te worden verzonden naar een webservice (dit is al werkend).
Het probleem is dat als ik 1 automodel met bijbehorende onderdelen bij elkaar wil verzamelen met een 'after insert' trigger op de 'Automodel' tabel de gegevens nog niet zijn weggeschreven naar de koppeltabel 'Koppel'. Hierdoor krijg ik een 'Automodel' dat in de trigger geen onderdelen bevat.
Nu heb ik voor dit probleem wat rond gezocht en de volgende mogelijke oplossingen bedacht:
• trigger laten 'sleepen' (ranzige + onbetrouwbare oplossing)
• trigger laten wachten tot het einde van de transaction (lijkt me de mooiste oplossing maar hoe? Gezocht maar niets gevonden)
• trigger vervangen door een procedure die hetzelfde werk verricht door periodiek uit gevoerd te worden (polling)
• trigger op de koppeltabel zetten en
• andere ideeën...?
Nu zou ik graag wat horen wat jullie van deze mogelijke oplossingen vinden. Als iemand een andere mogelijke oplossing heeft hoor ik dat ook graag.
Om het probleem te versimpelen heb ik dit voorbeeld gemaakt.
We hebben de volgende tabellen:
Automodel tabel
code:
1
2
3
4
| id name description datumToevoeging (= type datetime) |
Onderdeel tabel
code:
1
2
3
| id name description |
Koppel tabel
code:
1
2
| car_id part_id |
Relaties:
Automodel 1 ----- 0..* Koppel
Koppel * ---- 0..* Onderdeel
En het is de bedoeling dat er een nieuw automodel wordt toegevoegd met bijbehorende relaties met de onderdelen. Nadat deze is toegevoegd door een extern (closed source) programma moet een trigger gestart worden die de gegevens weer bij elkaar verzameld.
Met deze gegevens wordt een object in pl/sql gevuld. Dit object bevat dan alle gegevens van het automodel en dient te worden verzonden naar een webservice (dit is al werkend).
Het probleem is dat als ik 1 automodel met bijbehorende onderdelen bij elkaar wil verzamelen met een 'after insert' trigger op de 'Automodel' tabel de gegevens nog niet zijn weggeschreven naar de koppeltabel 'Koppel'. Hierdoor krijg ik een 'Automodel' dat in de trigger geen onderdelen bevat.
Nu heb ik voor dit probleem wat rond gezocht en de volgende mogelijke oplossingen bedacht:
• trigger laten 'sleepen' (ranzige + onbetrouwbare oplossing)
• trigger laten wachten tot het einde van de transaction (lijkt me de mooiste oplossing maar hoe? Gezocht maar niets gevonden)
• trigger vervangen door een procedure die hetzelfde werk verricht door periodiek uit gevoerd te worden (polling)
• trigger op de koppeltabel zetten en
• andere ideeën...?
Nu zou ik graag wat horen wat jullie van deze mogelijke oplossingen vinden. Als iemand een andere mogelijke oplossing heeft hoor ik dat ook graag.