В вашем триггере эта строка:
DELETE FROM Zboží WHERE (SELECT zbožíID FROM deleted) = zbožíID
Произойдет ошибка, если deleted
содержит более одной строки.
Просто напишите это вместо этого:
DELETE FROM Zboží WHERE zbožíID IN (SELECT zbožíID FROM deleted)
Кроме того, способ объявления и заполнения @p_mnozstvi
также приведет к ошибке, если deleted
содержит более одной строки.
Не будет ошибки, если вы сделаете это таким образом, но вы можете получитьнеожиданные результаты:
DECLARE @p_mnozstvi INTEGER;
SELECT @p_mnozstvi = množstvíSklad FROM deleted;
Вероятно, было бы лучше переосмыслить, как вы хотите обрабатывать эту часть логики, когда deleted
содержит несколько строк.Возможно, используйте EXISTS()
, чтобы проверить, содержит ли какая-либо строка значение ноль (или не ноль, в зависимости от того, как вы хотите его обработать).