Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    47
    Ho letto qualcosa e provato a creare un trigger:


    CREATE TRIGGER prova
    ON scadenze
    AFTER INSERT
    AS

    IF [DATA2] IS NULL
    BEGIN
    SET [DATA2] = [DATA1]
    END;

    dove DATA1 è una data sempre impostata però mi da errore sul segno =

    In cosa sbaglio?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Quote Originariamente inviata da chigibi Visualizza il messaggio
    Ho letto qualcosa e provato a creare un trigger:

    In cosa sbaglio?

    Grazie
    In varie cose

    Se il trigger lo fai dopo l'insert (ed è giusto) il tuo record è già effettivamente stato inserito nel database quindi dovrai andare a fare un'operazione di update dell'ultimo record inserito, aggiornando il valore della colonna data2 (ed impostandola uguale a quella che ha la colonna data1 dell'ultimo record inserito)

    Ovviamente dovrai aggiornare il campo data2 solamente dell'ultimo record inserito (e non tutti quelli eventualmente già presenti).

    Per trovare l'ultimo record inserito nei trigger si può usare la parola "inserted" (che indica, appunto, l'ultima cosa inserita)

    Il tuo trigger potrebbe quindi essere qualcosa del tipo (l'ho scritto senza pensarci troppo, si può ovviamemte migliorare, non fosse altro perchè ci sono 2 query identiche e quindi si potrebbe utilizzare una variabile di appoggio)

    CREATE TRIGGER [dbo].[test_trg]
    ON scadenze
    AFTER insert
    AS
    BEGIN

    if (select data2 from inserted) is null

    update scadenze set data2 = (select data1 from inserted) where data1 = (select data1 from inserted)

    END

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 © 2025 vBulletin Solutions, Inc. All rights reserved.