linux user group brescia

immagine del castello

Archivio della mailing list

psql e rule

fabio penguin a email.it
Sab 8 Mar 2003 13:27:58 UTC
ciao Damiano, ecco tutto quello che serve per capire dove sta il mio
errore.
ho messo tutto il necessario per ricostruire la mia situazione, basta
aggiungere qualche riga alla tabella t_attivita t_processi.

--
-- inizio sql
-- 
--  tabella processi
--

create sequence processi_seq;
create table processi (
  id_processo                   integer primary key default nextval('processi_seq'),
  id_tipo_processo		integer,
  descrizione                   text,
  note                          text,
  id_stato                      integer
);

--
-- tabella t_attivita t_processi
--

create sequence t_attivita_t_processo_seq;
create table tipi_attivita_tipi_processo (
id_tipo_attivita_tipo_processo integer primary key default nextval('t_attivita_t_processo_seq'),
  id_tipo_attivita               integer ,
  id_tipo_processo               integer 
);

--
-- tabella attivita
--

create sequence attivita_seq;
CREATE TABLE attivita (
id_attivita                   integer primary key default nextval('attivita_seq'),
id_processo                   integer references processi(id_processo),
id_tipo_attivita              integer ,
data_creazione                timestamp without time zone,
id_risorsa_responsabile       integer 
);

--
-- fine sql

--
-- La rule
--

CREATE RULE
        inserisci_attivita
as on insert to processi
where
        id_tipo_processo=NEW.id_tipo_processo
        do
        insert into attivita
                select  
                nextval('attivita_seq'),
                NEW.id_processo,
                id_tipo_attivita,
                CURRENT_TIMESTAMP
                from 
                tipi_attivita_tipi_processo
                where
                id_tipo_processo=NEW.id_tipo_processo 
                      
;
--
-- fine! ...buon divertimento a tutti
--


facendo alcune prove mi accorgo che:

1. se faccio una 
INSERT INTO processi VALUES (1,1);
...tutto ok sia insert in processi che in attivita

2. se la stessa insert la do come
INSERT INTO processi VALUES (nextval('processi_seq'),'1');
...ecco che salta fuori l'errore

3. concludendo se do 
INSERT INTO processi VALUES(nextval('processi_seq'));
tutto ok (la rule non la esegue ...come giusto che sia)

Benvenuto sia colui che mi volesse illuminare!!!!

ciao ciao

Bio



Maggiori informazioni sulla lista Lug