Le trigger qui ne marche pas

Signaler
Messages postés
7
Date d'inscription
lundi 1 août 2011
Statut
Membre
Dernière intervention
4 mai 2012
-
Messages postés
7
Date d'inscription
lundi 1 août 2011
Statut
Membre
Dernière intervention
4 mai 2012
-
a propos du probléme que je vous ai envoyé sur les transactions j'ai essayé de le travailler avec les triggers mais encore une fois fois n'a pas marché
rappel du problème
j'ai une table réservation et j'ai deux champs début et date_fin
et je veux que la demande de réservation s'ajoute a la table que si la date de debut est inférieur a la deuxième date
voila le code que j'ai réalisé

Create trigger tr1
on reservation after insert
as
begin tran
declare @a datetime,@b datetime
select @a=(select date_debut from inserted),
@b=(select date_fin from inserted)
if(@a<@b)
begin
commit tran
print @a
print @b
print 'valeur bien ajouté'
end
else
begin
print 'erreur'
rollback tran
end


voila ce qu'il m'affiche:
Jun 16 1905 12:00AM
Jun 30 1905 12:00AM
valeur bien ajouté

des valeurs qui ont aucune relation avec ce que j'ai saisi
merci de votre aide :)

4 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

l'utilisation d'une transaction est-elle une contrainte ?
Parce qu'autrement perso je ferai le test des valeurs avant l'insertion.
"Si mes valeurs sont cohérentes alors j'insère, sinon j'envoie bouler".
Messages postés
7
Date d'inscription
lundi 1 août 2011
Statut
Membre
Dernière intervention
4 mai 2012

D'abord merci pour votre réponse mais ce que j'ai pas compris c'est que pourquoi le trigger fait le test avec des valeurs aléatoires et non pas avec les valeurs que je viens de saisir ,si j'ai commis une erreur au niveau de la requête pouvez vous me la montrer :)
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Fouya ! Je suis pas expert en PL ... et j'en ai surtout fait pour Oracle.

Déjà pour récupérer une valeur dans une variable il me semble que c'était une commande du genre :
SELECT monchamp INTO @mavariable FROM matable

Et pour l'assignation de constante on utilise l'opérateur :=

Pour ce qui est d'accéder aux valeurs de l'enregistrement, sous Oracle, j'utilisais les objet :NEW et :OLD (je connais pas inserted) sans requêter dessus, il fallait les utiliser comme des objets, genre :
:NEW.monchamp


Et d'un point de vue général je trouve que ça manque de point-virgule sur les fin de commande ^^
Messages postés
7
Date d'inscription
lundi 1 août 2011
Statut
Membre
Dernière intervention
4 mai 2012

d'accord merci :)