トリガーがあります:
CREATE TRIGGER BEFORE_DELETE_ON_SENTIERO__HA__TAPPA
BEFORE DELETE ON SENTIERO__HA__TAPPA
FOR EACH ROW
BEGIN
DECLARE temp_prima_tappa INTEGER;
DECLARE temp_ultima_tappa INTEGER;
-- NOW THIS QUERY WILL FAIL; it checks if the record that has to be deleted is in the table
IF NOT EXISTS ( SELECT *
FROM SENTIERO__HA__TAPPA as sht
WHERE OLD.IDsentiero=sht.IDsentiero and OLD.IDtappa=sht.IDtappa) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'DELETE: La tappa indicata non è nel sentiero; impossibile elimnarla';
END IF;
IDsentieroとIDtappaは、それらの相対テーブルのPKです。SENTIEROの場合はIDsentiero、TAPPAの場合はIDtappaです。
問題は、DELETEQUERYがそのエラーメッセージで私に応答しないことです。そのレコードがテーブルに存在しないため、 何も削除できませんが、単にDELETEQUERYを実行します。
問題はそのクエリです..確かですが、バグを見つけることができません。