как правильно построить триггер на удаление mySQL
мне нужно удалить строку по id из двух связанных таблиц
Создание таблиц:
create table pet_owner(
id_owner int not null auto_increment,
first_name varchar(50) not null,
second_name varchar(50),
last_name varchar(50) not null,
phone varchar(10) not null,
owner_password varchar(50) not null,
email varchar(50),
primary key (id_owner));
create table pet(
id_pet int not null auto_increment,
id_owner int not null,
animal_type varchar(20) not null,
breed varchar(50) not null,
pet_name varchar(20) not null,
age double not null,
sex BIT(1) not null,
primary key (id_pet),
foreign key (id_owner) references pet_owner(id_owner));
триггер:
delimiter $$
CREATE TRIGGER pet_owner_delete
after delete
on pet_owner
for each row
BEGIN
delete from pet_owner where pet_owner.id_owner=OLD.id_owner;
delete from pet where pet.id_owner=OLD.id_owner;
END$$
delimiter ;
и его использование:
delete from pet_owner
where id_owner = 1;
Ошибка которую выводит
Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (happy_pet.pet, CONSTRAINT pet_ibfk_1 FOREIGN KEY (id_owner) REFERENCES pet_owner (id_owner))
Ответы (1 шт):
Автор решения: git abbuser
→ Ссылка
delimiter $$
CREATE TRIGGER pet_owner_delete
before delete
on pet_owner
for each row
BEGIN
delete from pet where pet.id_owner=OLD.id_owner;
END$$
delimiter ;