Триггер MYSQL для обновления или вставки на основе операторов if - PullRequest
0 голосов
/ 01 октября 2018

У меня есть две таблицы, tbl_stock и tbl_stockEntry, эти две таблицы идентичны.

У них есть следующие поля: количество сортов сорта склада

, когда запись вводится в таблицу tbl_stockEntry Iхотел бы либо обновить соответствующую запись в таблице tbl_stock, либо создать новую запись, если соответствующей записи нет.

Но мне нужно, чтобы она соответствовала 3 полям: склад, сорт и сорт.

Это мой триггер для создания записи, но я не могу заставить ее вставить запись, если ничего не найдено.

BEGIN
  UPDATE tbl_stock
     SET quantity = quantity + NEW.quantity
   WHERE vegetableCultivar = NEW.vegetableCultivar
   AND warehouse = NEW.warehouse;
END

Я пробовал это, но это не работает:

BEGIN
  UPDATE tbl_stock
     SET quantity = quantity + NEW.quantity
   WHERE vegetableCultivar = NEW.vegetableCultivar
   AND warehouse = NEW.warehouse;
     if sql%rowcount = 0 then  
    -- nothing was updated, so the record doesn't exist, insert it. 
    insert into tbl_stock (warehouse, vegetableCultivar, vegetableVariety, quantity)
            values (NEW.warehouse, NEW.vegetableCultivar, NEW.vegetableVariety, NEW.quantity);
  end if;
END

Если кто-нибудь знает, как мне это сделать, буду очень признателен за помощь.

1 Ответ

0 голосов
/ 01 октября 2018

Хорошо, это работает:

BEGIN
  UPDATE tbl_stock
     SET quantity = quantity + NEW.quantity
   WHERE vegetableCultivar = NEW.vegetableCultivar
   AND warehouse = NEW.warehouse;

    IF ROW_COUNT() = 0 THEN  
    INSERT INTO tbl_stock (warehouse, vegetableCultivar, vegetableVariety, quantity)
  values (NEW.warehouse, NEW.vegetableCultivar, NEW.vegetableVariety, NEW.quantity);
  end if;
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...