Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577

    [MS SQL] Strutturazione Trigger

    Buonasera a tutti.
    Mi sto scervellando per cercare di risolvere un problema legato ai trigger, quindi spero che qualcuno qui mi dia una mano.

    Ho una tabella categorie con un campo progressivo che devo incrementare di +1 ad ogni inserimento fatto nella tabella articoli.
    Chiaramente la tabella categ conterrà più records, ma io devo incrementare solo la categoria (quindi il record) che è stata inserito nella tabella articoli.

    Ho provato a creare il trigger seguente, ma forse mi sfugge ancora qualcosa:

    codice:
    USE [DB1]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER TRIGGER [dbo].[incr_categ] 
       ON  [dbo].[articoli] 
       AFTER INSERT
       
    AS 
    BEGIN
    SET NOCOUNT ON;
     
        UPDATE categ SET progr_categ = progr_categ +1
    END
    Grazie a tutti in anticipo.

    Lucia

  2. #2
    fammi capire: tu inserisci un record in tabella articoli e il trigger deve incrementare di 1 la tabella categorie? perché?

  3. #3
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    E il problema qual'è ?

    Non fa niente, aggiorna quello sbagliato, aggiorna tutti... dacci qualche dettaglio in più...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    Grazie per aver risposto optime.

    Cerco di spiegarmi meglio:

    tabella categ
    id_categ | des_categ | qta_categ
    1 | alimenti | 12
    2 | utensili | 9
    3 | gadgets | 11
    4 | profumi | 7
    5 | scarpe | 5

    Poi ho la tabella articoli (o acquisti)
    id_art | id_categ | data_acquisto | utente_acquisto
    1 | 2 | 10/10/2009 | 122


    Nella riga della tabella articoli (acquistati) ho scritto:

    la categoria movimentata (2), la data di acquisto e l'utente che ha acquistato l'articolo.
    Fin qui tutto normale. Per ogni nuova riga (quindi ON INSERT) scritta nella tabella articoli, devo incrementare la qta_categ della tabella categ.
    Pertanto, dall'esempio tabellare di prima la riga di categ con id_categ = 2 mi deve incrementare il campo qta_categ diventando 10.

    Spero di non averti creato ulteriore confusione.

    Grazie ancora
    Lucia

  5. #5
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Vado a memoria... prendilo con le pinze

    Il trigger lo farai nella tabella articoli, on insert e la "tabella" Inserted contiene appunto il record appena inserito

    http://programmazione.html.it/guide/...084/i-trigger/

    Quindi qualcosa del tipo:

    update categ set qta_categ = qta_categ + 1 where id_categ = (select id_categ from Inserted)

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    Risolto !

    Grazie a tutti.

    Volevo chiedervi ancora, sarebbe possibile consultare queste tabelle 'inserted' e ' deleted' per vederne il contenuto ?
    Come ?

    Grazie ancora.

    Lucia

  7. #7
    Originariamente inviato da lucisetti
    Risolto !
    ----------------------------------------------------
    nello spirito del forum, spiega come hai fatto, così aiuterai qualche altro forumista che dovesse avere lo stesso problema.
    ----------------------------------------------------

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    Ho semplicemente copiato e incollato l'esempio di comas17.

    Saluti

    Lucia

  9. #9
    questo?

    update categ set qta_categ = qta_categ + 1 where id_categ = (select id_categ from Inserted)

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    577
    esatto !

    Prima chiedevo se qualcuno saprebbe dirmi come poter visualizzare tutti i dati contenuti nelle tabelle virtuali 'inserted' e 'deleted'.

    Grazie

    Lucia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.