Rechercher : dans
Par :

[SQL] Trigger before delete

Dernière réponse le 30 oct 2009 à 19:41:53 zzzer, le 30 oct 2009 à 18:25:25 
 Signaler ce message aux modérateurs

Bonjour,

J'ai une table PRODINFO contenant des informations sur les differents produits (dont le prix : list_price) et une table PRICEHISTORY qui enregistre tous les changements de prix de tous les produits (rec_id, product_id, rec_date, price) ; rec etant pour record ( ou enregistrement en francais).

Ce que je veux maintenant c'est faire en sorte que quand un produit est supprime de la table PRODINFO, toutes les lignes de la table PRICEHISTORY le concernant soient aussi supprimees.

J'ai donc ecrit ce trigger :

create or replace
trigger modProduct
before insert or update or delete of list_price on prodinfo
for each row
begin
if deleting then
delete * from priceHistory
where priceHistory.product_id = :old.product_id
else
INSERT INTO pricehistory(rec_id, product_id, rec_date, price)  VALUES(recIDSeq.nextval, :new.product_id, SYSDATE, :new.list_price);
end if;
end;


Mais lorsque j'essaye de faire des operations avec les produits, SQL Developer m'informe que mon trigger n'est pas valide...

Quelqu'un saurait me dire ou est mon erreur ?


Merci d'avance ! ;)

N'oubliez pas de marquer la discussion comme résolue dès que­ c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte : 
Rédiger les messages dans un langage clair sans abréviation, style télégraphique ou mode SMS
Configuration: HP DV5 1123ef

3Go de RAM
Core 2 Duo 2GHz
NVidia 9600M GT

Meilleures réponses pour « [SQL] Trigger before delete » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Gestion des paramètres SQL VoirSQL présente un certain nombre de paramètres au niveau d'Oracle qu'il est possible de visualiser à travers la commande : SHOW ALL Pour modifier la valeur d'un paramètre il suffit d'utiliser la commande : SET NOM_PARAM VALEUR
Sauvegarde automatique d'une BDD sous SQL EXPRESS 2005 VoirSi vous vous voulez automatiser une sauvegarde d'une base de données sous SQL server express, il existe une solution simple grâce à un fichier .bat. Créez un nouveau fichier texte. Ce fichier doit contenir les informations suivantes: SET...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...

1

 zzzer, le 30 oct 2009 à 19:41:53

Resolu :

delete from pricehistory
where product_id = :old.product_id;
N'oubliez pas de marquer la discussion comme résolue dès que­ c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte : 

Rédiger les messages dans un langage clair sans abréviation, style télégraphique ou mode SMS

Répondre à zzzer
Collection CommentÇaMarche.net