UTILIZZO DI UN TRIGGER

di il
3 risposte

UTILIZZO DI UN TRIGGER

Salve,

Sono nuovo del forum, e Vi ringrazio anticipatamente per le eventuali risposte.

Avrei bisogno di capire una cosa:

-Utilizzo un sw gestionale che si gira con un db, su un motore sql.

- questio sw, ovviamente, utilizza delle maschere, scritte in vb6, per registrare dei documenti

Avrei bisogno, di capire se, tramite l'utilizzo di un TRIGGER o di un' altra istruzione, posso intercettare l'insert o l'update su una determinata tabella, e far comparire un messaggio di poche righe sul video dell' utente.

è importante che il messaggio non sia bloccante, e che quindi l' insert o l' update vadano a buon fine.

faccio un banale esempio:

L'utente preme sul bottone registra, compare il messaggio "attenzione, licenza scaduta", e il documento viene registrato.


Spero di essere stato abbastanza chiaro, e mi scuso per gli eventuali strafalcioni

Grazie

3 Risposte

  • Re: UTILIZZO DI UN TRIGGER

    Itachi86 ha scritto:


    Avrei bisogno, di capire se, tramite l'utilizzo di un TRIGGER o di un' altra istruzione, posso intercettare l'insert o l'update su una determinata tabella, e far comparire un messaggio di poche righe sul video dell' utente.
    ciao,
    si puoi farlo.

    Ad esempio con un trigger, AFTER INSERT fai un controllo e se si verifica una condizione Stampi il messaggio.

    Essendo il trigger AFTER INSERT il messaggio comparira' dopo l'inserimento.
  • Re: UTILIZZO DI UN TRIGGER

    Ciao,

    grazie mille per l'attenzione e la risposta

    io ho tentato (raccogliendo un po' di info, dato che mi sono da poco affacciato su questo tipo di operazioni)

    di scrivere una cosa del genere:

    IF OBJECT_ID ('TR_MSDO11','TR') IS NOT NULL
    DROP TRIGGER TR_MSDO11;
    GO

    CREATE TRIGGER TR_MSDO11 ON DO11_DOCTESTATA
    AFTER INSERT
    AS

    DECLARE @PrintMessage nvarchar(50);

    SET @PrintMessage = N'ATTENZIONE LICENZA SCADUTA'

    DECLARE @DATACTL DATETIME;

    SET @DATACTL = GETDATE()

    IF @DATACTL >= (SELECT ISNULL(FW07_DATAFINEVAL, @DATACTL) FROM FW07_APPUSER
    WHERE FW07_CODICE = 'TeamSa'
    )


    RAISERROR (@PrintMessage, 16, 1);


    Ma purtroppo, nonostante utilizzo AFTER INSERT, la transazione viene comunque interrotta e ricevo l'errore che mi chiede se voglio o meno ripetere la transazione.

    Esiste un modo per avere un semplice messaggio a video, e far andare a buon fine la transazione? (in questo caso la scrittura di un documento)


    Grazie mille
  • Re: UTILIZZO DI UN TRIGGER

    Itachi86 ha scritto:


    Ciao,

    grazie mille per l'attenzione e la risposta

    io ho tentato (raccogliendo un po' di info, dato che mi sono da poco affacciato su questo tipo di operazioni)

    di scrivere una cosa del genere:

    IF OBJECT_ID ('TR_MSDO11','TR') IS NOT NULL
    DROP TRIGGER TR_MSDO11;
    GO

    CREATE TRIGGER TR_MSDO11 ON DO11_DOCTESTATA
    AFTER INSERT
    AS

    DECLARE @PrintMessage nvarchar(50);

    SET @PrintMessage = N'ATTENZIONE LICENZA SCADUTA'

    DECLARE @DATACTL DATETIME;

    SET @DATACTL = GETDATE()

    IF @DATACTL >= (SELECT ISNULL(FW07_DATAFINEVAL, @DATACTL) FROM FW07_APPUSER
    WHERE FW07_CODICE = 'TeamSa'
    )


    RAISERROR (@PrintMessage, 16, 1);


    Ma purtroppo, nonostante utilizzo AFTER INSERT, la transazione viene comunque interrotta e ricevo l'errore che mi chiede se voglio o meno ripetere la transazione.

    Esiste un modo per avere un semplice messaggio a video, e far andare a buon fine la transazione? (in questo caso la scrittura di un documento)


    Grazie mille
    ciao,

    non conosco i trigger in sqlserver quindi non so dirti se il trigger che hai creato e' corretto.

    Ad occhio sembra corretto.

    Comunque puoi piu semplicemente scrivere del codice che faccia questo semplice controllo , quindi niente trigger
Devi accedere o registrarti per scrivere nel forum
3 risposte