Trigger banale ... per voi

lunedì 08 giugno 2009 - 15.35

dandi.box Profilo | Junior Member

Ciao a tutti, altro problemino con un altro triggherino

ho una tabella in cui inserisco delle quantità che indicano quanti articoli sono inseriti in ogni ordine

per ogni insert/delete/modify vorrei aggiornare il campo Giacenza corrispondente all'articolo specifico (tramite un trigger)


mi date una mano?


per ogni articolo ho un campo giacenza che contiene la giacenza aggiornata...


CREATE TABLE [dbo].[Articoli](
[IDArticolo] [int] IDENTITY(1,1) NOT NULL,
[IDArticoloTipo] [varchar](2) COLLATE Latin1_General_CI_AS NULL,
[CodiceArticolo] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[DescrizioneArticolo] [varchar](200) COLLATE Latin1_General_CI_AS NULL,
[Modello] [varchar](100) COLLATE Latin1_General_CI_AS NULL,
[Fornitore] [varchar](200) COLLATE Latin1_General_CI_AS NULL,
[Giacenza] [int] NULL CONSTRAINT [DF_Articoli_Giacenza] DEFAULT ((0)),
CONSTRAINT [PK_AnagraficaArticoli] PRIMARY KEY CLUSTERED
(
[IDArticolo] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF



ogni volta che inserisco un articolo devo incrementare la giacenza di quella quantità.... e quando cancello un record voglio eliminare tale quantità ... stesso discorso per l'update


CREATE TABLE [dbo].[AnagraficaArticoli](
[IDAnagraficaArticolo] [int] IDENTITY(1,1) NOT NULL,
[IDAnagrafica] [int] NULL,
[IDArticolo] [int] NULL,
[Quantita] [int] NULL,
CONSTRAINT [PK_AnagraficaArticoli_1] PRIMARY KEY CLUSTERED
(
[IDAnagraficaArticolo] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]



Grazie mille!!!

alx_81 Profilo | Guru

>Ciao a tutti, altro problemino con un altro triggherino
Ciao

>mi date una mano?
Cosa c'è che non capisci? hai letto per bene la sintassi di CREATE TRIGGER?
http://msdn.microsoft.com/it-it/library/ms189799.aspx

Semplicemente devi considerare le tabelle speciali create dall'operazione di trigger (inserted, deleted) in modo da leggere il valore della giacenza dell'articolo e poi eseguire una semplice update. Ma come sempre, preferisco una bella stored procedure per evitare di scrivere un trigger.

>Grazie mille!!!
di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

squilibrio Profilo | Expert

Il mio problema è che non so come impostare il trigger da zero :-((

alx_81 Profilo | Guru

>Il mio problema è che non so come impostare il trigger da zero :-((
ti rimando al link in cui ti ho illustrato un semplice modello di trigger:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=30949

Ricordati che tu puoi impostarlo a livello di tabella e quindi, puoi determinare la ridefinizione di un comando di UPDATE, INSERT o DELETE (tramite INSTEAD OF TRIGGERS) oppure puoi gestire delle logiche dopo i comandi (AFTER TRIGGER). A te servono i DML trigger (quelli relativi al DATA MODIFICATION, e non alla modifica della struttura, i DDL trigger) e quindi devi sapere che tramite essi vengono automaticamente create due tabelle virtuali, la deleted e la inserted. In base ai comandi che vai a gestire queste tabelle hanno al loro interno i valori delle righe che stai per inserire o per eliminare (nel caso dell'update, entrambi). Prova a seguire l'esempio dell'altro post, vedrai che ci arriviamo in fondo.
ciao,

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5