Czy istnieje sposób sprawdzenia, czy zapytanie wewnątrz wyzwalacza MySQL zwraca pusty zestaw?
Po wstawieniu wiersza do tabeli A, wyzwalacz musi wstawić z niego niektóre wartości do innej tabeli B, ale tylko wtedy, gdy tabela B nie zawiera już wiersza z taką kombinacją wartości. Oto co wymyśliłem:
CREATE TRIGGER upd_manufactorer_in_category AFTER INSERT ON product
FOR EACH ROW
BEGIN
DECLARE id_category INT;
DECLARE id_manufacturer INT;
DECLARE id_category_test INT;
SET id_category=NEW.id_category;
SET id_manufacturer=NEW.id_manufacturer;
SET id_category_test=(SELECT 'id_category'
FROM category_has_manufacturer
WHERE 'id_category'=id_category
AND 'id_manufacturer'=id_manufacturer);
IF id_category_test IS NULL
THEN
INSERT INTO category_has_manufacturer
SET category_has_manufacturer.id_category = id_category,
category_has_manufacturer.id_manufacturer = id_manufacturer;
END IF;
END
I działa, wstawia wiersz do tabeli. Ale to nie sprawdza, czy istniało wcześniej, więc mam wiele duplikatów. Oczywiście mogę to sprawdzić za pomocą DISTICT, ale to nie jest to, co chcę osiągnąć tutaj. Chcę mieć tabelę zawierającą tylko unikalne pary (id_category, id_manufacturer). Czy ktoś może mi pomóc?