Se ho capito bene :
-- Create table
create table TABELLA_A
(
CODICE_A VARCHAR2(30) not null,
DESCRIZIONE VARCHAR2(100)
)
/
-- Create/Recreate primary, unique and foreign key constraints
alter table TABELLA_A
add constraint TABELLA_A_PK primary key (CODICE_A)
using index
/
-- Create table
create table TABELLA_B
(
CODICE_B VARCHAR2(30) not null,
DESCRIZIONE VARCHAR2(100),
CODICE_A VARCHAR2(30)
)
/
-- Create/Recreate primary, unique and foreign key constraints
alter table TABELLA_B
add constraint TABELLA_B_PK primary key (CODICE_B)
using index
/
alter table TABELLA_B
add constraint TABELLA_B_FK_TABELLA_A foreign key (CODICE_A)
references TABELLA_A (CODICE_A)
/
Se voglio inserire in TABELLA_B anche se il codice A non esiste
Trigger
CREATE OR REPLACE TRIGGER T_TABELLA_B_INS
BEFORE INSERT ON TABELLA_B
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
BEGIN
if :new.codice_a is not null then
insert into tabella_a (codice_a,descrizione)
select :new.codice_a,'Descrizione '||:new.codice_a
from dual
where not exists (select 1
from tabella_a
where codice_a = :new.codice_a
);
end if;
END T_TABELLA_B_INS;
In questo modo qualsiasi riga che si inserira' in tabella b con referenza a tabella a si autoalimetera'