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

PL/SQL Oracle Discussion :

Emulation des pseudo-tables inserted/deleted


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut Emulation des pseudo-tables inserted/deleted
    Bonjour,

    Je cherche comment avoir un équivalent des tables INSERTED/DELETED de SQL Server!
    En fait, j'essaie de traduire une instruction SQL Server de jointure entre la table DELETED et la table dont on supprime des lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM [TableEntity] WHERE ID IN (SELECT Ins.ID FROM [inserted] Ins , [TableEntity] Ent WHERE
    Dans mon cas, le dernier enregistrement inséré dans [inserted] qui m'intéresse
    Bien sur cette ligne est utilisée dans un trigger after delete! Je projette de créer alors une table avant cela pour contenir tous les :old
    Est-ce une bonne approche? Le problème c'est que table créée avec EXECUTE IMMEDIATE n'est pas reconnue dans cette requête (undeclared identifier)

    Autre idée générale

    Pour avoir une émulation totale des pseudo-tables Mssql, je pense à faire l'insertion dans une table temporaire avec les triggers FOR EACH ROW puis traiter la table résultante dans un trigger statement du même évènement.
    J'ai pas encore implémenté cette technique mais est-ce bon?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et si tu expliquais à ceux qui ne connaissent pas les pseudo-tables SQL Server, ce que tu veux faire ? Parce que personnellement, je ne comprends pas bien le but de la manoeuvre

  3. #3
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Désolé de m'être mal exprimé!
    Le but c'est de faire une table temporaire pour contenir les lignes supprimées grâce à un trigger pour traiter le tout à la fin dans un trigger instruction after delete
    Comment faire pour cette idée de table temporaire?

    Les pseudo-tables(inserted,deleted) de SQL Server sont des tables pour contenir les lignes mises à jour ou supprimées possèdant la même définition que la table sur laquelle le trigger est appliqué. Bref, c'est l'équivalent des :old et :new de Oracle.
    Sauf que SQL Server n'a pas de trigger For Each Row donc il enregistre les lignes d'abord dans ces pseudo-tables et traiter le tout dans le trigger à la fin de la requête. Remarquons qu'Oracle possède 2 types de base de trigger: instruction et ligne (for each row) tandis que SQL Server n'a que le trigger instruction qui se sert de INSERTED/DELETED pour récupérer des informations sur l’opération déclenchante
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par randriano Voir le message
    Désolé de m'être mal exprimé!
    Le but c'est de faire une table temporaire pour contenir les lignes supprimées grâce à un trigger pour traiter le tout à la fin dans un trigger instruction after delete
    Comment faire pour cette idée de table temporaire?
    ...
    http://asktom.oracle.com/tkyte/Mutate/index.html

  5. #5
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Je ne comprend pas où voulez-vous en venir mnitu
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par randriano Voir le message
    Je ne comprend pas où voulez-vous en venir mnitu
    Nul part. Mais il me semble que l’article en question décrit le mécanisme que vous cherchez. Laisser tomber le titre concernant la table « klingoniane ». Avez vous examiné le code de la section Case 2 ?

  7. #7
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    J'utilise Oracle 9i release 2!!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  8. #8
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Même version.

  9. #9
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Même version.
    C'est bizarre, utilises-tu le même script que j'ai attaché à mon précédent post?

    Revenons à l'origine de ce thread (émulation des pseudo-tables): je vais finalement opter pour la table ordinaire que je vide à chaque BEFORE INSERT, insertion à chaque AFTER INSERT FOR EACH ROW
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  10. #10
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    J'y opte car j'ai besoin de faire un SELECT sur l'émulation de la table. J'avais pensé que le package avec une variable table va suffire mais on ne peut pas y faire un select si je ne me trompe pas !!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

Discussions similaires

  1. Pseudo table Inserted et triger instead of
    Par Dschub dans le forum Développement
    Réponses: 4
    Dernier message: 10/04/2009, 16h42
  2. Exécuter des requètes d'insertion de table
    Par Kalion dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 19/01/2009, 15h12
  3. ADO.NET INSERT DELETE UPDATE refresh des composants graphic
    Par jeriko dans le forum Accès aux données
    Réponses: 5
    Dernier message: 15/01/2007, 15h17
  4. Question sur les tables inserted et deleted
    Par critok dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/06/2006, 22h03
  5. voir les tables virtuel deleted inserted
    Par berceker united dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/06/2006, 14h31

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