IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

ALTER TRIGGER avec FB 2.1


Sujet :

SQL Firebird

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 74
    Points : 62
    Points
    62
    Par défaut ALTER TRIGGER avec FB 2.1
    Bonjour à tous,

    J'utilise un script de versionning qui passe bien avec Firebird 1.5.
    Mais qui ne paasse pas sous Firebird 2.1. (béta 2).

    Voilà à quoi il ressemble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ALTER TRIGGER ON_SUPP_X AFTER DELETE POSITION 0 AS BEGIN
    UPDATE T_Y SET T_Y.CLE_X = 1
    WHERE T_Y.CLE_X = T_X.CLE_X; 
    UPDATE T_Z SET T_Z.CLE_X = 1
    WHERE T_Z.CLE_X = T_X.CLE_X; 
    END
    Suite à une recherche ici même, j'ai essayé plusieurs choses en utilisant, ou pas, le mot clé OLD, mais je ne trouve pas d'où vient le problème.

    Si vous avez une idée, ce ne serait pas de refus
    seb

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    sur quelle table ce trigger ?
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    merci d'avoir jeté un oeil

    Le trigger est sur la table T_X :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TRIGGER ON_SUPP_X FOR T_X
    AFTER DELETE POSITION 0 AS 
    BEGIN
    UPDATE T_Y SET T_Y.CLE_X = 1
    WHERE T_Y.CLE_X = T_X.CLE_X; 
    UPDATE T_Z SET T_Z.CLE_X = 1
    WHERE T_Z.CLE_X = T_X.CLE_X; 
    END
    J'arrive bien à créer un trigger avec l'éditeur de IBOConsole, mais je ne parviens pas à le créer via une requête SQL...
    seb

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SET TERM  ^^ ;
    CREATE TRIGGER ON_SUPP_X FOR T_X
    AFTER DELETE POSITION 0 AS 
    BEGIN
    UPDATE T_Y SET T_Y.CLE_X = 1
    WHERE T_Y.CLE_X = OLD.CLE_X; 
    UPDATE T_Z SET T_Z.CLE_X = 1
    WHERE T_Z.CLE_X = OLD.CLE_X; 
    END
     ^^
    SET TERM ;  ^^
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    merci beaucoup, ça fonctionne

    Et la version "Create or alter" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SET TERM  ^^ ;
    CREATE OR ALTER TRIGGER ON_SUPP_X FOR T_X AFTER DELETE POSITION 0 AS 
    BEGIN
    UPDATE T_Y SET T_Y.CLE_X = 1 WHERE T_Y.CLE_X = OLD.CLE_X; 
    UPDATE T_Z SET T_Z.CLE_X = 1 WHERE T_Z.CLE_X = OLD.CLE_X; 
    END
     ^^
    SET TERM ;  ^^
    Remarques :
    - il n'y a que sous IBConsole que les " SET TERM" sont nécessaires.
    Sous l'explorateur SQL, il n'y en a pas besoin.
    - Cette syntaxe de création des trigger passe aussi sous Firebrd 1.5, j'ai donc quelques modifs à faire, mais le code sera compatible entre FB 1.5 et 2.1. (bonne nouvelle )


    Serait-ce abuser de vous demander la signification des "SET TERM" et des "^^" ? début et fin de transaction ?
    En tout cas, merci mucho !
    seb

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par Seb des Monts Voir le message
    Serait-ce abuser de vous demander la signification des "SET TERM" et des "^^" ? début et fin de transaction ?
    En tout cas, merci mucho !
    Set TERM est une commande qui fixe le caractère de terminaison de l'ordre SQL lequel est par défaut le point-virgule.
    En le laissant par défaut, la création du trigger s'arrêterait sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE T_Y SET T_Y.CLE_X = 1 WHERE T_Y.CLE_X = OLD.CLE_X;


    Enfin, on peut mettre à peu près ce qu'on veut pour le SET TERM:
    - ^^
    - ùù
    - !!
    Dès lors qu'on n'emplafonne avec une commande SQL ou assimilée

    En fin de script, on remet le défaut.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    D'accord, merci.
    seb

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Alter Table, avec un serveur Lié
    Par danisam dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 30/11/2006, 18h54
  2. SQL SERVER 2005 - Alter Trigger réactive le trigger ?
    Par Peck777 dans le forum Développement
    Réponses: 1
    Dernier message: 29/06/2006, 13h51
  3. TRIGGER avec inserted + UPDATE sur INSERTED
    Par shaka84 dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2006, 10h26
  4. pb trigger avec nested table
    Par evlad dans le forum Oracle
    Réponses: 1
    Dernier message: 29/12/2005, 12h04
  5. ALTER VIEW avec condition
    Par yan77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/04/2004, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo