trigger et sql manager lite 2005
bonjour,
je connais Firebird depuis trois jours et je suis bloquer par un probleme stupide (enfin je pense!).
Je dois creer un script qui genere le schema de la base de donnees. La base de donnees est donc Firebird et le GUI SQL Manager Lite 2005. Pas de soucis avec des CREATE TABLE, les INDEX etc... par contre les TRIGGER ne passent pas!
J'utilise SQL Manager 2005 Lite comme GUI.
Je genere le code suivant a partir de l'editeur de TRIGGER :
CREATE TRIGGER CONF_TRIGGER FOR TABLE
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
IF (NEW.MonID IS NULL)
THEN NEW.MonID = GEN_ID (conf_generator,1);
END;
ou conf_generator est un generateur.
* Quand je copie cette requete dans le fichier qui contient toutes les requetes pour generer le schema de la base de donnees, et que je l'ouvre dans le SQL Editor, FireBird bloque sur le TRIGGER.
* Quand je met 2 triggers dans le SQL editor et que je clique sur Execute Query , il bloque sur le 2e.
* Quans j'en met un seul et que je clique sur "Explain Query" , j'obtiens le message d'erreur suivant :
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command.
* Dans la meme situation que le point precedent, mais avec le bouton Execute Query, l'action se deroule correctement
voila, j'ai essaye d'etre le plus precis possible.
Desole pour les accents, je n'en ai pas sur mon clavier.
Merci,
Matthias
merci mais ca ne marche toujours pas
Merci Phillippe
mon nouveau code est donc :
Code:
1 2 3 4 5 6 7 8 9 10
| SET TERM ^^;
CREATE TRIGGER CONF_TRIGGER FOR CONFIG
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
IF (NEW.CONFIGID IS NULL)
THEN NEW.CONFID = GEN_ID (conf_generator,1);
END;
SET TERM ;^^ |
Le message d'erreur que j'obtient est :
Citation:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 9, char 1.
SET.
En cherchant un peu a quoi correspondait SET TERM j'ai trouve plein de fornulations differentes :
SET TERM ^^;
SET TERM ^;
SET TERM $$;
SET TERM !!;
A quoi correspond ces differences? Est-ce que c'est lie au dialecte utilise? J'ai choisi les dialectes 3 parcequ'il comprend le type BIGINT que j'utilise a l'origine dans la bdd MySQL que je suis en train de migrer vers FireBird.
maintenant ca marche, mais je voudrais comprendre pourquoi ?!#@
j'ai remplace les ^^ que Philipe m'avait conseille par des !!
La requete devient donc :
Code:
1 2 3 4 5 6 7 8 9 10
| SET TERM !! ;
CREATE TRIGGER CONF_TRIGGER FOR CONFI
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
IF (NEW.CONFID IS NULL)
THEN NEW.CONFID = GEN_ID (conf_generator,1);
END !!
SET TERM ; !! |
Y-a-t'il un document sur le net qui explique dans quel cas utiliser ^, ! ou $ ?