Bonjour,
j'ai un petit souci pour faire un enrégistrement automatique dans l'une de mes table de ma base de donnée et j'aimerais bien avoir votre aide.
Dans ma base de données, j'ai deux tables: T_APPARTEMENT et T_CONTRAT crée avec les syntaxes suivantes:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 create table T_APPARTEMENT (ID_appart int primary key identity (1,1), num_appart varchar (10), type_appart varchar (20), niveau varchar (3), ID_im int foreign key references T_IMMEUBLE (ID_im), etat_appart varchar (6))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 create table T_CONTRAT (ID_contrat int primary key identity (1,1), date_sign datetime, mois_prise_effet datetime, nb_mois_avance smallint, nb_mois_consigne smallint, date_resiliation datetime, ID_appart int foreign key references T_APPARTEMENT (ID_appart), ID_loc int foreign key references T_LOCATAIRE (ID_loc))
Lorsqu'on signe un contrat,a propriété de etat_appart de l'appartement conserné prend la valeur "OCCUPE" et lorsqu'on résilie le contrat, l'état redevient "LIBRE".
Pour pouvoir le faire, j'ai créé un déclencheur avec la syntaxe suivante:
Quand je fais un nouvel enregistrement, ce déclencheur fonctionne normalement.
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 create trigger mise_a_jr_etat_appart on T_CONTRAT for insert, update as declare @n int declare @m datetime set @n= (select ID_appart from T_CONTRAT where ID_contrat= (select max(ID_contrat)from T_CONTRAT)) set @m =(select date_resiliation from T_CONTRAT where ID_contrat= (select max(ID_contrat)from T_CONTRAT)) if @m is null update T_APPARTEMENT set etat_appart='OCCUPE'where ID_appart=@n else update T_APPARTEMENT set etat_appart='LIBRE'where ID_appart=@n
Par contre, lorsque je fais une mise à jour sur un enregistrement, cela ne fonctionne pas.
En fait je sais pas récupérer l'ID_appart de l'appartement sur lequel on effectue la mise à jour.
Aussi, j'aimerais avoir votre aide.
Y a t-il une manière de procéder?
Merci d'avance de votre aide.
Partager