Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не работает условная конструкция в триггере  [new]
jeanssp
Member

Откуда:
Сообщений: 164
Подскажите пожалуйста в чем ошибка?
Почему то не выполняются инструкции "ELSE IF(@q) < 0"
Причем если первый блок IF закомментировать, то все работает.


ALTER TRIGGER [dbo].[trMatcingStocksOnInsert]
ON [dbo].[order_details]
FOR INSERT 
AS
IF @@ROWCOUNT = 0
RETURN
SET NOCOUNT ON

DECLARE @g_id int ;
DECLARE @q int ;
SET @g_id = (SELECT 1 good_id FROM inserted)
SET @q = (SELECT 1 qty FROM inserted)
IF (@q)>0
BEGIN
UPDATE goods_stocks
SET stock = gs.stock - i.qty
FROM goods_stocks gs JOIN
(SELECT good_id, SUM(qty) qty FROM inserted GROUP BY good_id) i
ON gs.good_id = i.good_id
DELETE FROM goods_stocks
WHERE stock = 0;

END

ELSE IF(@q) < 0
BEGIN

INSERT  goods_stocks (good_id, stock, available) 
SELECT good_id,qty*-1,qty*-1
FROM inserted

END;


Сообщение было отредактировано: 20 авг 19, 12:27
20 авг 19, 12:22    [21953298]     Ответить | Цитировать Сообщить модератору
 Re: Не работает условная конструкция в триггере  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
null < 0 == false
20 авг 19, 12:28    [21953310]     Ответить | Цитировать Сообщить модератору
 Re: Не работает условная конструкция в триггере  [new]
jeanssp
Member

Откуда:
Сообщений: 164
Разобрался
20 авг 19, 13:00    [21953361]     Ответить | Цитировать Сообщить модератору
 Re: Не работает условная конструкция в триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Гавриленко Сергей Алексеевич
null < 0 == false
Если быть совсем точным, то unknown, но главное для if, что это не true.
20 авг 19, 13:03    [21953362]     Ответить | Цитировать Сообщить модератору
 Re: Не работает условная конструкция в триггере  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Данные с таблицы даже не читались. Там всегда 1 было.
Ну и конечно говнокод детектед. А что если в таблицу вставят больше чем одну строку за раз?
22 авг 19, 23:03    [21956079]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить