Non se ne esce facilmente da questa cosa... come sempre mysql è piuttosto contorto. Ho cercato di documentarmi su come funzionano i trigger e ho scritto questa cosa:
codice:
CREATE TRIGGER `casaVecchioProprietario`
AFTER DELETE ON `casacittadino`
FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT * FROM casacittadino WHERE casa = old.casa AND dataFinePossesso is Null)
THEN
UPDATE casacittadino AS cc
INNER JOIN
(SELECT casa, max(dataInizioPossesso) mdip FROM casacittadino WHERE casa = old.casa GROUP BY casa) cc1
ON cc.casa = cc1.casa AND cc.dataInizioPossesso = cc1.mdip
SET dataFinePossesso = null;
END IF;
END
Però quando deve girare il trigger mi da questo errore:
Can't update table 'casacittadino' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Quindi sembra che non posso lavorare direttamente sulla tabella che invoca il Trigger? Vi risulta che sia giusta questa cosa? Perchè in tal caso si perde molta della potenza di questa funzione....