Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    trigger che controlla un ID inesistente

    Considerate una tabella di persone con chiave primaria ID
    Quando elimino una persona lo faccio tramite l' ID.
    Se inserisco un ID non valido (che non esiste) la query "delete from persona where ID=x" non mi da nessun errore, allora voglio creare un Trigger del tipo:

    codice:
    CREATE TRIGGER delete_persona 
    BEFORE delete ON persona
    FOR EACH ROW BEGIN SELECT RAISE(ROLLBACK, 'errore su elimina persona: id non esistente') 
    WHERE (SELECT id FROM persona WHERE persona.id = OLD.id) IS NULL;
     END;"
    il trigger non funziona: dove sbaglio?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Prova così:
    codice:
    CREATE TRIGGER delete_persona  BEFORE delete ON persona
    FOR EACH ROW 
    BEGIN
    declare num_per integer default 0;
    declare no_pers condition for SQLSTATE '45000';
    select count(*) into num_pers
    from Persona
    where id=old.id;
    
    if( num_pers = 0) then
    signal no_pers set MESSAGE_TEXT='non ci sono persone con l'id specificato';
    end if
    END;
    Saluti.

  3. #3
    dimenticavo di dire che sto usando SQLITE e php: quando provo a creare il trigger mi da errore su "declare"

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.