2012-05-30 2 views
3

У меня есть две таблицы, property и component. component.id_property = property.id.SQL-процедура - изменение значения столбца таблицы на основе подсчета по другой таблице

Я пытаюсь создать процедуру, которая подсчитывает компоненты на выбранной недвижимости и, если нет компонентов для выбранного свойства, то изменение property.id_state к 1.

create PROCEDURE property_statement_change AS 
BEGIN 
declare @value int; 

select 
    @value = count(c.value) 
from 
    component c 
where 
    c.id_property = 1 
group by c.id_property 

IF (@value = 0) 
    UPDATE property 
    SET id_state = 1 
    WHERE property.id = 1 
END 

Если я выполнить хранимую produre, это Безразлично «ничего не меняйте, но выберите и также правильно обновите. Что я делаю неправильно?

+1

То, что вы выглядит правильно. Он будет обновлять свойство (id_state до 1), если счетчик равен 0. Перед вашим IF попробуйте SELECT @Value и посмотрите, 0 –

+1

Вы уверены, что @value = 0? –

+0

Ага, я идиот, '@value is null' :-) – gaffcz

ответ

2

Как указано в комментариях, значение NULL вместо, а не 0, так вот код:

create PROCEDURE property_statement_change AS 
BEGIN 
declare @value int; 

select 
    @value = count(c.value) 
from 
    component c 
where 
    c.id_property = 1 
group by c.id_property 

IF (@value is NULL) 
    UPDATE property 
    SET id_state = 1 
    WHERE property.id = 1 
END