2011-10-14 7 views
5

Attualmente ho una tabella Item e una tabella ItemWaste. Entrambe le tabelle avranno alcuni campi, come: Nome, Quantità, ecc. Ma la tabella ItemWaste avrà un altro campo, che è il TimeWasted. Desidero inserire automaticamente l'elemento ELIMINATO dalla tabella Articolo alla tabella ItemWaste e allo stesso tempo inserire il tempo di cancellazione nel campo TimeWasted.Trigger server SQL: inserire il record eliminato in un'altra tabella con deletetime

Non ho idea di come si fa, usa trigger ???

speranza può avere un aiuto qui ... Apprezzare tutte le risposte ... Grazie ....

+0

basta creare il trigger – Bala

risposta

8

Certo - non è un problema.

Hai bisogno di un semplice AFTER DELETE grilletto - qualcosa di simile:

CREATE TRIGGER trg_ItemDelete 
ON dbo.Item 
AFTER DELETE 
AS 
    INSERT INTO dbo.ItemWaste(Name, Amount, TimeWasted) 
     SELECT d.Name, d.Amount, GETDATE() 
     FROM Deleted d 

Questo è tutto quello che c'è! Un punto da ricordare: il trigger si chiama una volta per batch - ad es. se elimini 100 righe contemporaneamente, si chiamerà una volta e la pseudo tabella Deleted conterrà 100 righe. Il trigger è non chiamato una volta per riga (un malinteso comune).

+0

È lavoro! Grazie mille! – shennyL

+0

Btw, non ho davvero capito cosa intendi per una volta per batch, se elimino 3 righe, la tabella eliminata avrà ancora 3 rites di righe? – shennyL

+0

@ user834754: sì - se si dispone di un'istruzione SQL che cancella 3 righe - il trigger verrà attivato ** una volta ** ma la pseudo tabella 'Deleted' conterrà 3 righe, e quindi 3 righe verranno inserite nel tuo' ItemWaste 'tavolo. –

0

Sì, semplicemente scrivendo un trigger è possibile insert una riga quando viene eseguita delete azione in un'altra tabella, dare un'occhiata a Triggers

Problemi correlati