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

    [mysql] trigger errore 1442

    ciao
    Il seguente trigger mi restituisce l'errore 1442
    codice:
    DELIMITER |
    
    CREATE TRIGGER ChkUpdateUserRole AFTER UPDATE ON users
    FOR EACH ROW
    BEGIN
    	IF (NEW.role = 'admin' OR  NEW.role <> 'member') THEN
    		UPDATE users SET role = OLD.role WHERE id = OLD.id;
    	END IF;
    END;
    
    | DELIMITER ;
    Errore:
    codice:
    Error: 1442 SQLSTATE: HY000 (ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG)
    Message: Can't update table 'users' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
    Cosa c'è che non va? :master:

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Dice che non puoi fare un update sulla stessa tabella che scatena il trigger

  3. #3
    :master: che strano però che non permetta di eseguire le stesse istruzioni del trigger che le scatena

  4. #4
    risolto
    si può risolvere utilizzando BEFORE al posto di AFTER e le istruzioni SET
    codice:
    DELIMITER |
    CREATE TRIGGER Chk_UpdateUserRole BEFORE UPDATE ON users
    FOR EACH ROW
    BEGIN
    	IF (NEW.role = 'admin' OR  NEW.role <> 'member') THEN
    		SET NEW.role = OLD.role;
    	END IF;
    END;
    | DELIMITER;
    Però imho sarebbe utile la possibilità di poter utilizzare istruzioni insert,update,delete del trigger che le scatena sulla stessa tabella

    ciao

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.