Bonjour,

Je suis plus habitué à l'écriture de triggers sous SQL Server que sous Oracle.

Je souhaite faire un trigger "global" (donc pas "for each row").

Lorsque les données inserrées correspondent à certains critères, je souhaite forcer la valeur inserrée.

Voici ce que j'ai tenté d'écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
create or replace
TRIGGER WTRIG_EVL 
-------------------------------------------------------------------------------
--      Trigger : wtrig_evl
--      Fichier : ap$triggers:wtrig_evl.sql
--      Si on est en train de créer un retour marchandise (V/RET) alors 
--      l'emplacement de la livraison ne soit pas être repris. On est forcément
--      sur un emplacement vide pour remettre en stock non réservé client.
-------------------------------------------------------------------------------
--      Auteur    : S.DEVIDAL
--      Version |Date        |Auteur     |Objet
-------------------------------------------------------------------------------
--      V.1     | 2011-12-05 | S.DEVIDAL |Version initiale
-------------------------------------------------------------------------------
BEFORE INSERT ON EVL
BEGIN
   update new
   set codemp = ' '
   where codsoc = 218
   and achvte = 'V'
   and typeve = 'RET';
END;
Voici les erreurs que je me prends dans la tête :

Erreur(2,4): PL/SQL: SQL Statement ignored
Erreur(2,11): PL/SQL: ORA-00942: table or view does not exist

Pour le première erreur, j'ai aucune idée d'où ça vient.
Et pour la seconde, j'en déduis que "new" n'existe pas... Et ":new" me fait une erreur du même acabit.