Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365

    [MYSQL] TRIGGER istruzioni per l'uso LOG

    Salve

    stavo sperimentando i Trigger e ne approfitto per chiedervi qualche informazione...

    in una tabella "voucher" ho inserito un trigger. questo dovrebbe ad ogni insert andare a creare una nuova riga un una tabella "log"

    questo codice funziona

    codice:
    CREATE DEFINER = 'root'@'localhost' TRIGGER `voucher_after_ins_tr` AFTER INSERT ON `voucher`
      FOR EACH ROW
    BEGIN
    INSERT INTO intranet.log (time,id_operazione,)
    VALUES (NOW( ) ,  LAST_INSERT_ID());
    END;
    a questo punto, vorrei, che oltre time e id_operazione venga anche inserito nella tabella log un valore inserito nella tabella voucher

    codice:
     INSERT INTO voucher (nome) VALUES ('mio nome')
    quindi che anche "mio nome" venga inserito nella tabella log

    ho provato a fare in questo modo

    codice:
    BEGIN
    DECLARE test VARCHAR(100);
    SELECT nome FROM voucher WHERE id = LAST_INSERT_ID() INTO test;
    INSERT INTO intranet.log (time,id_utente,nome)
    VALUES (NOW( ) , LAST_INSERT_ID(), test);
    END
    ma non va...

    qualcuno puo' darmi qualche idea? grazie!

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    A parte il fatto che "non va" non significa niente , prova così (vado a memoria)
    codice:
    CREATE DEFINER = 'root'@'localhost' TRIGGER `voucher_after_ins_tr` AFTER INSERT ON `voucher`
      FOR EACH ROW
    BEGIN
    INSERT INTO intranet.log (time,id_utente,nome)
    VALUES (NOW( ) ,  LAST_INSERT_ID(), NEW.nome);
    END;

  3. #3
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    ammetto di essermi espresso male... in realtà la sintassi è corretta solo che il mio mysql server si era impallato

    cmq la tua forma è più corretta, e funziona pure

    x cui GRAZIE

  4. #4
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    come faccio ad usare un comendo simile a NEW sull'update?

    devo inserire nel log id della riga che cancello!

  5. #5
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    codice:
    BEGIN
    INSERT INTO log (LOG_datatime, LOG_id_operazione, LOG_azione)
    VALUES (NOW( ) , ***ID DEL VOUCHER CHE CANCELLO*** , 'Cancellato Voucher');
    END
    cosa metto lì? Before oppure After?

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    OLD

    (non era difficile eh )

  7. #7
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    e grazie

    e adesso datemi un idea... ho una variabile di sessione dove registro l'id dell'utente che sta operando sul DB...

    in caso di delete e di trigger, come faccio a scrivere quale utente cancella il record dal DB?

    anche se mi sa che a questo punto vado fuori topic

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.