[java] Statement.execute() en triggers aanmaken

Pagina: 1
Acties:

  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 24-08 13:14
Ik ben bezig met een tool om twee databases met elkaar te verglijken. Wanneer ze van elkaar verschillen worden de ontbrekende tabellen en kolommen ingevoerd. Nu vroeg ik mij af of het ook mogelijk is om triggers en generators op dezelfde manier in te voeren zijn, of dat ik hier voor aparte sql-scripts moet schrijven.

Overigens gebruik ik interbase als database.

Groetjes


  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:34

momania

iPhone 30! Bam!

ik begrijp hieruit dus dat je twee databases hebt op verschillende machines die eigenlijk elkaar moeten schaduwen :?

Neem je whisky mee, is het te weinig... *zucht*


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 24-08 13:14
Nee, ik moet een programma updaten. De oude versie heeft een database, de nieuwe uiteraard ook en in die nieuwe staan een aantal tabellen die niet in de oude voorkomen. Ze staan gewoon op de zelfde machine.

Maar naast tabellen en kolommen staan er ook generators en triggers in de nieuwe database die nodig zijn voor een goede werking van het programma. Daar ik zelf geen update's uit zal voeren maar andere mensen wil ik dit het liefst zo automatisch mogelijk maken. Hiervoor moet het dan wel mogelijk zijn om met een Statement een trigger aan te maken.

Groetjes


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 24-08 13:14
voor de volledigheid....hier de oplossing

Ja het kan. Men neme de metadata over uit IBConsole. Alle aanhalings tekens weghalen en dmv. Statement.executeUpdate(SQLCommando); de tabel en trigger aan maken.

Groetjes


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 24-08 13:14
code:
1
2
3
4
5
6
7
8
9
10
 private void executeUpdate(String aSQL){
        try{
            stmtOld.executeUpdate(aSQL);
        }catch(SQLException anEx){
            System.out.println("FOUT BIJ " +aSQL);
            System.out.println("@@@@@@@");
            System.out.println("Controleer de database op de betreffende tabel, generator of view");
            
        }
    }


Jammer.....maar met het bovenstaande stukje is het dus niet mogelijk om triggers toe te voegen aan een database. Dit komt waarschijnlijk doordat er meerdere ";" (puntcomma's) in het create trigger statement staan.

code:
1
2
3
4
5
6
7
8
9
10
SET TERM ^;
CREATE TRIGGER "CREATE_ALERTSID" FOR "ALERTS" 
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
        NEW.ID = GEN_ID(ALERTS_GEN, 1);
    END
 ^

COMMIT WORK ^
SET TERM ;^


Kijk dit zal voor de hand liggend zijn, en ik heb ook gezocht naar antwoorden, hier / op het internet, maar zoek maar eens op java, trigger, database ;-)

psies Dan vind je heel veel. Misschien is het trouwens ook gewoon onmogelijk wat ik wil, je ne sais pas.

[ Voor 10% gewijzigd door yrew op 11-02-2003 16:50 ]

Groetjes


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 24-08 13:14
Ik blijf gewoon hoopvol doortypen tot iemand met een andere ingeving komt, hoop niet dat jullie het erg vinden.

Maar het gaat dus al fout op op SET TERM
SQL error code = -104
Token unknown - line 1, char 5
TERM

Dit krijg ik uiteraard terug wanner ik een SQLException.printStackTrace() uit voer. Ik denk dat ik de triggers er maar via een sql-script in laat zetten. Dat is jammer, want dat betekend dat ik alles automatisch update/aanmaak/aanpas maar niet de triggers.

Groetjes

Pagina: 1