Триггер выглядит так, как будто он удаляет районы, чей идентификатор равен id_countries, то есть предложение where фактически
WHERE districts.id_countries = districts.id
Вам нужно указать идентификатор из таблицы стран. В триггере удаления используйте «old» для этого.
CREATE TRIGGER [delete_country]
BEFORE DELETE
ON [countries]
FOR EACH ROW
BEGIN
DELETE FROM districts WHERE districts.id_countries = old.id;
END
Кроме того, я бы предложил изменить соглашение об именах схем. Обычно имя таблицы является единственным и соответствует сущности в строке. У меня будет таблица стран с идентификаторами и именами столбцов, таблица районов с идентификаторами, идентификаторами и именами стран и т. Д.
country
-------
id
name
district
-------
id
country_id
name
municipality
------------
id
district_id
name
parish
-----
id
municipality_id
name
Тогда триггер будет
CREATE TRIGGER [delete_country]
BEFORE DELETE
ON [country]
FOR EACH ROW
BEGIN
DELETE FROM district WHERE district.country_id = old.id;
END