Rechercher : dans
Par :

[ORACLE] Trigger pour ON UPDATE CASCADE

Dernière réponse le 11 mar 2009 à 08:29:27 Babouche, le 10 mar 2009 à 16:34:53 
 Signaler ce message aux modérateurs

Bonjour,

Sachant que la syntaxe ON UPDATE CASCADE n'est pas reconnue dans ORACLE, il faut créer un trigger.
Exemple :

CREATE TABLE Table_P (
ID_P INTEGER NOT NULL ,
ID_E INTEGER NOT NULL ,
NUM_PRO INTEGER NOT NULL ,
NUM_L INTEGER NOT NULL ,
PRIMARY KEY(ID_P) ,
FOREIGN KEY(ID_E)
REFERENCES Table_E(ID_E)
ON DELETE CASCADE
ON UPDATE CASCADE);

Pour remplacer la syntaxe ON UPDATE CASCADE, il faut créer le trigger suivant :

CREATE OR REPLACE TRIGGER Update_Table_P
AFTER UPDATE OF ID_P ON Table_P
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
V_NEWID VARCHAR2 (6);
V_OLDID VARCHAR2 (6);
BEGIN
V_NEWID := :NEW.ID_P;
V_OLDID := :OLD.ID_P;

Jusque là je pense avoir raison.

Ce que je voudrai savoir, c'est comment créer le trigger avec cette exemple :

CREATE TABLE Table_A (
ID_A INTEGER NOT NULL IDENTITY ,
ID_R INTEGER NOT NULL ,
NUM_P SMALLINT NOT NULL ,
NUM_L SMALLINT NOT NULL ,
PRIMARY KEY(ID_A) ,
FOREIGN KEY(NUM_L)
REFERENCES Table_L (NUM_L)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(ID_R, NUM_P)
REFERENCES Table_R(ID_R, NUM_P)
ON DELETE CASCADE
ON UPDATE CASCADE);

Pouvez-vous m'aider ?

Meilleures réponses pour « [ORACLE] Trigger pour ON UPDATE CASCADE » dans :
Windows Update [toutes versions] VoirLe moyen le plus commode pour tenir à jour son système est de passer par Démarrer>Tous les programmes>Windows Update. Une fois sur le site, seules seront proposées les mises à jour nécessaires. Cependant, un assez grand nombre d'utilisateurs...
Update Checker - Vos logiciels sont-ils à jour ? VoirVous avez du mal à tenir tous vos logiciels à jour ? En effet, sous Windows, quand on a plusieurs dizaines de logiciels installés sur le système, il est difficile de vérifier qu'ils sont tous bien à jour. Sommaire Update Checker, la...
Linux - Oracle - Installation d'Oracle 11g sous Linux Ubuntu VoirPrésentation Téléchargement d’UBUNTU Téléchargement d’Oracle Configuration du serveur X Mise à jour des packages Installation des packages de pré-installation Mise à jour du shell Mise à jour de la configuration des utilisateurs...
Télécharger Update Checker VoirVous avez un peu marre de recherche les mises à jour de vos logiciels un par un ? Update Checker est là pour le faire à votre place. En effet, ce logiciel permet de trouver la liste des logiciels installés sur votre PC ainsi que leurs versions...
Télécharger Updater VoirSi vous avez remarqué, les logiciels proposent souvent des mises à jour régulières. Updater est un programme permettant d'effectuer une mise à jour d'un environnement logiciel. Il fonctionne à partir d’un ou plusieurs scripts qu'il peut...
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...
Oracle - Introduction au SGBD Oracle VoirIntroduction au SGBD Oracle Oracle est un SGBD (système de gestion de bases de données) édité par la société du même nom (Oracle Corporation - http://www.oracle.com), leader mondial des bases de données. La société Oracle Corporation a été créée en...
Oracle - Les séquences VoirCet article s'appuie sur la version 8.1.6 d'Oracle. Une séquence est un objet de base de données Oracle, au même titre qu'une table, une vue, etc... Autrement dit, il appartient à un utilisateur, on peut le manipuler, le modifier, à condition...

1

Babouche, le 10 mar 2009 à 16:42:34

J'ai oublié un bout du trigger pour l'exemple, je le remet en entier :

CREATE OR REPLACE TRIGGER Update_Table_P
AFTER UPDATE OF ID_P ON Table_P
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
V_NEWID VARCHAR2 (6);
V_OLDID VARCHAR2 (6);
BEGIN
V_NEWID := :NEW.ID_P;
V_OLDID := :OLD.ID_P;

UPDATE Table_P
SET ID_P = V_NEWID
WHERE IP_P = V_OLDID;
END;

Répondre à Babouche

2

Fallentree, le 10 mar 2009 à 17:18:10

Regarde là peut etre ...
http://books.google.fr/books?id=P8lDLYWio9QC&pg=PA219&dq=oracle+ON+UPDATE+CASCADE+trigger#PPA215,M1

D'apres ce que j'ai compris...
le trigger permet de gerer des procedes alternatifs à la gestion uples et d'exclusion de masse...
Et
la rédaction est plus complexe que ta proposition, et fait appel à des jointures et patati et patata...
Quoique ta proposition est deja bien compliqué .. Old as old new as new ????

En gros, tu veux verifier que ta jointure est correctement inserer dans la table de suivi de old et new ????
D apres l exemple
Create tigger patatipatata ....
When Exist( select Old from table_R where old=new) Vérifie la jointure
Begin ...

C'est vrai que c est pas clair...
Exclure ou etre sur de créer...

Répondre à Fallentree

3

 Babouche, le 11 mar 2009 à 08:29:27

Old as old new as new permet de déclarer les tables intermédiaires avant l'update.
Donc avant de faire la mise à jour, on va insérer les nouvelles valeurs dans les clefs étrangères pour qu'après on puisse modifier la valeur de la clef primaire. Une fois que toutes les clefs étrangères possède la nouvelle valeur, on peut modifier la clef primaire.

Enfin c'est ce que j'ai compris lol

Répondre à Babouche