Trigger conta righe

lunedì 25 giugno 2007 - 21.17

mauss Profilo | Newbie

Salve a tutti sono nuovo e avrei alcune info da chiedervi.
Dovrei fare una funzione trigger che ogni volta che trova D in una tabella X mi toglie 1 dalla tabella Y e ogni volta che trova I nella tabella X mi aggiunge 1 alla tabella Y. Nella tabella Y c'è un numero di default.
Non so se mi sono spiegato, spero di sì.
Comunque grazie in anticipo.

lbenaglia Profilo | Guru

>Dovrei fare una funzione trigger che ogni volta che trova D in
>una tabella X mi toglie 1 dalla tabella Y e ogni volta che trova
>I nella tabella X mi aggiunge 1 alla tabella Y. Nella tabella
>Y c'è un numero di default.
>Non so se mi sono spiegato, spero di sì.

Ciao mauss,

che DBMS utilizzi?
Potresti postare i comandi DDL delle tabelle (CREATE TABLE...) spiegando dettagliatamente cosa intendi con "ogni volta che trova..."?

>Comunque grazie in anticipo.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

mauss Profilo | Newbie

Io ho questa tabella Statistiche che è destinataria di un'altro trigger statistiche_paziente che agisce in questo modo:
se tolgo mi inserisce nella tabella sottostante una 'D' se aggiungo mi mette 'I'

- Function: statistiche_paziente()

-- DROP FUNCTION statistiche_paziente();

CREATE OR REPLACE FUNCTION statistiche_paziente()
RETURNS "trigger" AS
$BODY$
BEGIN
-- Crea una riga nella tabella che riflette le modifiche fatte
-- nel database
IF (TG_OP = 'DELETE') THEN
INSERT INTO statistiche SELECT 'D', user, now();
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO statistiche SELECT 'U', user, now();
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO statistiche SELECT 'I', user, now();
RETURN NEW;
END IF;
RETURN NULL;
-- Ignora il risultato perchè siamo dopo del trigger
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION statistiche_paziente() OWNER TO postgres;




-- Table: statistiche

-- DROP TABLE statistiche;

CREATE TABLE statistiche
(
tipo_accesso character(20) NOT NULL,
nome_utente character varying NOT NULL,
tempo timestamp with time zone NOT NULL
)
WITHOUT OIDS;
ALTER TABLE statistiche OWNER TO postgres;



vorrei fare un'altra tabella con un numero di default e un trigger che mi conta le D e le I e di conseguenza mi aggiunge 1 o toglie 1.
Grazie mille

lbenaglia Profilo | Guru

>Io ho questa tabella Statistiche che è destinataria di un'altro
>trigger statistiche_paziente che agisce in questo modo:
>se tolgo mi inserisce nella tabella sottostante una 'D' se aggiungo
>mi mette 'I'
A parte che non ho ancora capito quello che vuoi fare, comunque vedo che utilizzi PostreSQL che non conosco, pertanto passo la palla a gente più competente di me

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

mauss Profilo | Newbie

Ok, grazie lo stesso
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5