Io userei un trigger BEFORE DELETE FOR EACH ROW. Qui un esempio che mi ero salvato tempo fa per MySQL, visto che mi serviva:
L'avevo provato su un mySql 5.5 (usa SIGNAL) , quindi non so se funziona su versioni precedenti.codice:DELIMITER $$ CREATE TRIGGER nome_trigger BEFORE DELETE ON nome_tabella FOR EACH ROW BEGIN IF condizione THEN -- Will only abort deletion for specified IDs SIGNAL SQLSTATE '45000' -- "unhandled user-defined exception" (consigliato come da documentazione per errori custom) -- Here comes your custom error message that will be returned by MySQL SET MESSAGE_TEXT = 'This record is sacred! You are not allowed to remove it!!'; END IF; END $$ DELIMITER ;
Ovviamente lo puoi personalizzare un po' come ti piace:
- Aggiungendo ulteriori controlli
- Inserendo una tabella di auditing
Link utili:
TRIGGER
SQLSTATE
abbiamo i trigger, usiamoli su...![]()

Rispondi quotando
