Bonjour,
J'essaie de convertir une base HSQLDB intégrée en standalone server. J'ai
réussi à récupérer les données, à établir le lien avec le fichier
intermédiaire .odb et à récupérer les formulaires existants. Tout va bien,
et ça va beaucoup plus vite, grâce en grande partie à la doc de
Jean-François Nifenecker.
MAIS : Mon but initial était de bénéficier d'un trigger d'historisation, qui
à chaque modification des données d'une table enregistre la valeur avant
modification (donc un trigger BEFORE UPDATE si je ne fais erreur).
Et ça ne fonctionne pas... Voici la syntaxe que j'utilise sur deux tables
test :
CREATE TRIGGER "BeforUpdateTable1" BEFORE UPDATE
ON "Table1" FOR EACH ROW
INSERT INTO "HistTable1" ("Ligne1", "Ligne2", "ID")
VALUES (OLD."Ligne1", OLD."Ligne2", OLD.ID)
Lorsque j'exécute cette commande depuis l'utilitaire SQL de LibreOffice
(Base), j'obtiens ce message :
1: user lacks privilege or object not found: OLD.Ligne1
J'ai installé SQuirreL et j'ai réussi à le faire démarrer sur MacOS (mais
ceci est une autre histoire). Lorsque je saisis la même instruction dans
SQuirreL, j'obtiens exactement le même message.
J'ai essayé un peu tous les formats d'instruction, avec ou sans OLD, avec ou
sans guillemets, j'ai créé une table dont les noms de colonnes sont tout en
majuscule, rien n'y fait, c'est toujours le même message.
Je dois avoir les privilèges voulus, puisque je suis en principe connecté SA
et que j'ai créé une colonne IDENTITE sans problème...
Bref, avez-vous une idée ? Est-ce raisonnable de vouloir utilise HSQLDB pour
cela ? Ai-je meilleur temps de passer carrément à PostgreSQL ? Pour 2-3000
lignes dans quatre ou cinq tables, ça m'a l'air d'être de l'overkill, mais
si vraiment...
Ma version de HSQLDB est 2.4. Au fait, pourquoi n'est-ce pas cette version
qui est intégrée dans LibreOffice ?