Bonjour,
Sous Oracle 10g, j'ai créé un trigger qui est vu OK par Oracle, mais il ne s'exécute pas, et je ne sais pas comment le tester plus précisément. Sans doute que mon trigger n'est pas correct par rapport à ce que je souhaite faire.
Voici l'objectif :
J'ai une table GRAPHICAL_LINE_SURF, une table GRAPHICAL_LINE_SURF_SECT et une table TRAJ_DEP.
Je veux que sur insertion d'un record (et insertion uniquement) dans la table GRAPHICAL_LINE_SURF, il y ait copie des records de la table TRAJ_DEP dans la table GRAPHICAL_LINE_SURF_SECT, cela ne me semble pas complexe.
Mon trigger est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
create or replace trigger graphical_line_surf_sect_sid 
 before insert or update of airspace_env_name,name,kind on graphical_line_surf 
 for each row 
 begin 
 insert into graphical_line_surf_sect select
 :old.airspace_env_name,:old.name,:old.kind,'Y',tpd$dep#order_number,
 :old.airspace_env_name,point_name#geo_pt,null,null,null,null,null,null from traj_dep 
 where airspace_env_name=:old.airspace_env_name and
 departure_proc_name=:old.departure_proc_name#dep_proc;
 end;
 /
La syntaxe de l'ordre insert et son exécution a été testée en remplaçant les :old par de vrais valeurs.
Mes tables sont les suivantes:
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
40
41
42
43
44
45
46
47
48
49
SQL> desc graphical_line_surf
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 NAME                                      NOT NULL VARCHAR2(6)
 KIND                                      NOT NULL VARCHAR2(19)
 AIRSPACE_ENV_NAME#AIRWAY                           VARCHAR2(20)
 AIRWAY_NAME#AIRWAY                                 VARCHAR2(7)
 AIRSPACE_ENV_NAME#DEP_PROC                         VARCHAR2(20)
 DEPARTURE_PROC_NAME#DEP_PROC                       VARCHAR2(7)
 AIRSPACE_ENV_NAME#ARRIVAL                          VARCHAR2(20)
 ARRIVAL_PROC_NAME#ARRIVAL                          VARCHAR2(7)
 AIRSPACE_ENV_NAME#CTL_AREA                         VARCHAR2(20)
 CONTROLLED_AREA_NAME#CTL_AREA                      VARCHAR2(5)
 ATC_CENTRE_NAME#CTL_AREA                           VARCHAR2(8)
 AIRSPACE_ENV_NAME#N_C_AREA                         VARCHAR2(20)
 NON_CTL_AREA_NAME#N_C_AREA                         VARCHAR2(12)
 MAPS_USAGE_DESCRIPTOR                              VARCHAR2(64)
 
SQL> desc graphical_line_surf_sect
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 NAME                                      NOT NULL VARCHAR2(6)
 KIND                                      NOT NULL VARCHAR2(19)
 VISIBILITY                                NOT NULL VARCHAR2(1)
 ORDER_NUM                                 NOT NULL NUMBER(38)
 AIRSPACE_ENV_NAME#GEO_PT                           VARCHAR2(20)
 POINT_NAME#GEO_PT                                  VARCHAR2(5)
 KIND#GR_POINT                                      VARCHAR2(15)
 AIRSPACE_ENV_NAME#GR_POINT                         VARCHAR2(20)
 NAME#GR_POINT                                      VARCHAR2(16)
 LATITUDE                                           VARCHAR2(7)
 LONGITUDE                                          VARCHAR2(8)
 MAPS_USAGE_DESCRIPTOR                              VARCHAR2(64)
 
SQL> desc dep_proc
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 DEPARTURE_PROC_NAME                       NOT NULL VARCHAR2(7)
 AIRPORT_CODE#RUNWAY                       NOT NULL VARCHAR2(4)
 AIRSPACE_ENV_NAME#RUNWAY                  NOT NULL VARCHAR2(20)
 HEADING#RUNWAY                            NOT NULL NUMBER(38)
 RUNWAY_DISTINCTION#RUNWAY                          VARCHAR2(1)
 PRINT_ON_PAPER                            NOT NULL VARCHAR2(1)
 AIRCRAFT_TYPE                                      VARCHAR2(30)
 
SQL>
Je suis preneur d'un mode debug que je crois ne pas exister.
Merci de votre aide

PS : pour info, l'unicité des clés est gérée par index unique, c'est historique.