Bonjour,
Cette fois, je veux assigner une valeur à une colonne d'une table sur modification d'une autre colonne de cette même table. Mais la valeur à assigner vient d'une autre table. Dans ma première version qui a déclenché le message, j'avais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
create or replace trigger graphical_point_runway 
before update of heading#runway on graphical_point
begin
 update graphical_point set length=(select length from runway
 where airspace_env_name=:new.airspace_env_name#runway and heading=:new.heading#runway and runway_distinction=:new.runway_distinction#runway)
 where :old.heading#runway=:new.heading#runway and :old.runway_distinction#runway=:new.runway_distinction#runway;
end;
/
Je peux comprendre l'erreur car je cherche à faire un update sur un record déjà en update. C'est peut être un pb de syntaxe mais je ne sais pas comment aller chercher la valeur de la table RUNWAY sans mettre dans le trigger le UPDATE GRAPHICAL_POINT ... (SELECT ... FROM RUNWAY) WHERE ...
Passer par une table temporaire me semble compliqué pour ce que je veux faire, non ?
Merci

Mes tables :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SQL> desc graphical_point
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 NAME                                      NOT NULL VARCHAR2(16)
 KIND                                      NOT NULL VARCHAR2(15)
 AIRSPACE_ENV_NAME#GEO_PT                           VARCHAR2(20)
 POINT_NAME#GEO_PT                                  VARCHAR2(5)
 AIRSPACE_ENV_NAME#AIRPORT                          VARCHAR2(20)
 AIRPORT_CODE#AIRPORT                               VARCHAR2(4)
 AIRSPACE_ENV_NAME#RUNWAY                           VARCHAR2(20)
 AIRPORT_CODE#RUNWAY                                VARCHAR2(4)
 HEADING#RUNWAY                                     NUMBER(38)
 RUNWAY_DISTINCTION#RUNWAY                          VARCHAR2(1)
 AIRSPACE_ENV_NAME#HOLD                             VARCHAR2(20)
 HOLD_NAME#HOLD                                     VARCHAR2(20)
 LATITUDE                                           VARCHAR2(7)
 LONGITUDE                                          VARCHAR2(8)
 LENGTH                                             NUMBER(38)
 RUNWAY_HEADING                                     NUMBER(38)
 ORIENTATION                                        NUMBER(4,1)
 TURN_DIRECTION                                     VARCHAR2(1)
 LEG_LENGTH                                         NUMBER(38)
 LEG_TIME                                           NUMBER(38)
 MAPS_USAGE_DESCRIPTOR                              VARCHAR2(64)
 
SQL> desc runway
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 AIRPORT_CODE                              NOT NULL VARCHAR2(4)
 RUNWAY_DISTINCTION                                 VARCHAR2(1)
 HEADING                                   NOT NULL NUMBER(38)
 AIRSPACE_ENV_NAME#GEO_PT                  NOT NULL VARCHAR2(20)
 POINT_NAME#GEO_PT                         NOT NULL VARCHAR2(5)
 WIDTH                                              NUMBER(3,2)
 LENGTH                                             NUMBER(38)
 
SQL>