ninho44
Messages postés86Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention19 juin 2009
-
10 juin 2009 à 14:27
nivsql
Messages postés159Date d'inscriptionlundi 22 juin 2009StatutMembreDernière intervention14 décembre 2010
-
22 juin 2009 à 17:38
Bonjour,
J'ai un trigger qui n'est pas très compliqué, mais j'ai quand même un problème avec.
J'ai une table RESERVATION, avec trois champs ( logement,date,client)
Mon trigger doit vérifier que pour une réservation, le logement n'est pas déjà réservé à la date demandée.
Voici le trigger:
create trigger tg_ins_reserv
on reservation
for insert
as
declare @res_log int, @res_date datetime
select @res_log = res_log from inserted
select @res_date = res_date from insertedif exists (select res_num from reservation where res_log @res_log and res_date @res_date)
BEGIN
Raiserror ('Logement déjà réservé pour cette date',10,1);
Rollback Transaction
END
GO
Le problème est que, pour toute date que je renseigne, j'ai le message d'erreur 'Logement déjà réservé pour cette date', et l'insert ne fonctionne pas...
Quelqu'un saurait-il d'où vient le problème ?? MErci d'avance...
nivsql
Messages postés159Date d'inscriptionlundi 22 juin 2009StatutMembreDernière intervention14 décembre 2010 22 juin 2009 à 17:38
Il n'existe pas de trigger "befor insert" en SQL Server si c'est bien sur ce SGBD que tourne ce trigger (comme je le suppose vu la syntaxe).
Par contre la syntaxe me parrait assez propice a ce genre d'erreur.
create trigger tg_ins_reserv
on reservation
after insert
as
BEGIN
declare @res_log int, @res_date datetime
select @res_log = res_log from inserted
select @res_date = res_date from insertedif exists (select res_num from reservation where res_log @res_log and res_date @res_date)
BEGIN
Raiserror ('Logement déjà réservé pour cette date',10,1);
Rollback Transaction
END
END
GO