Przeczytałem to article, ale wygląda na to, że nie działa w przypadku usuwania. Dostałem ten błąd, gdy próbował stworzyć wyzwalacz:Jak napisać wyzwalacz, aby przerwać usuwanie w MYSQL?
Executing SQL script in server
ERROR: Error 1363: There is no NEW row in on DELETE trigger
CREATE TRIGGER DeviceCatalog_PreventDeletion
BEFORE DELETE on DeviceCatalog
FOR EACH ROW
BEGIN
DECLARE dummy INT;
IF old.id = 1 or old.id =2 THEN
SELECT * FROM DeviceCatalog WHERE DeviceCatalog.id=NEW.id;
END IF;
END;
SQL script execution finished: statements: 4 succeeded, 1 failed
Nazwa NEW.field istnieje po włożeniu lub aktualizacji rekordu; kiedy nic nie usuniesz, nowy nadchodzi do bazy danych !!! Błąd jest jasny: nie możesz użyć NEW.id, ponieważ NEW nie jest dozwolony w wyzwalaczu DELETE – Marco
Zgodnie z połączonym artykułem wybrane ustawienie powinno się nie powieść - twoja instrukcja select czyta się jak prawdziwa, a nie jak "wybierz do manekina" 'z artykułu, który ma zawieść. – miherrma