PB TRIGGER

sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008 - 17 mars 2008 à 13:33
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 - 27 mars 2008 à 11:20
J'ai une table dans ma base de donnée reservation

CREATE TABLE reservation
(
...
datearrivee date NOT NULL,
datedepart date NOT NULL,
...
) ;
---------------------------------------------------------------------------------------------------------------

Je souhaiterais faire le trigger suivant lorsque l'on fait un update pour modifier la date de depart ou la date d'arrivée si la date de depart est superieure a la date d'arrivée  datedepart >datearrivee

alors on modifie de la maniere suivante  pour que l'on ai sa datedepart < datearrivee
-------------------------------------------------------------------------------------------------------------------------------------------------
MON TRIGGER:
CREATE OR REPLACE TRIGGER modification_dat
AFTER UPDATE OF datedepart,datearrivee ON reservation

DECLARE
BEGIN

IF (new.datedepart > new.datearrivee)THEN

update reservation
set reservation.datedepart = :new.datearrivee
and reservation.datearrivee = :new.datedepart

raise_application_error(-20001,'ATTENTION');

ELSE
raise_application_error(-20001,'modification effectuée');
END IF;

END;
/
-------------------------------------------------------------------------------------------------------------------------
L'ERREUR:

SQL> @trigger
AFTER UPDATE OF datedepart,datearrivee ON reservation
          *
ERROR at line 2:
ORA-04082: NEW or OLD references not allowed in table level triggers

Je voulais savoir ou plutot comprendre à quoi servent les differentes utilisation des :
exemple:
la difference enter new.champs et :new.champs
la difference entre : =     et   =   en PL SQL

J'espere qu'on pourra m'aider....
- Merci pour votre éventuel coup de main  -

3 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
17 mars 2008 à 18:28
avec un
SELECT @datedepart datedepart, @datearrivee datearrivee FROM UPDATED;

ca ne marcherait pas ??? plutot que ton new.datedepart et  new.datearrivee

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
27 mars 2008 à 09:18
une petite question je vois souvent dans @ en pl /sql, je sais qu'il faut en mettre un lorsqu'on decide de charger un fichier.sql  @fichier mais  qu'est ce que @ dans cette syntaxe SELECT @datedepart datedepart, @datearrivee datearrivee FROM UPDATED;
@datedepart = :new.datedepart?
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
27 mars 2008 à 11:20
une variable simplement

Declare @datedepart datetime, @datearrivee datetime;
SELECT @datedepart datedepart, @datearrivee datearrivee FROM UPDATED;

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
Rejoignez-nous