2016-01-09 2 views
0

Я добавил целочисленный столбец columnY в таблицу tableX. Я написал сценарий обновления, который должен обновить этот столбец для строки с определенным значением Id, но когда я выполняю этот скрипт, сообщает, что она была завершена успешно (@@ERROR = 0), но значение не обновляетсяНе могу понять, почему мой запрос на обновление не работает

желаемых результатов будет этот запрос на обновление, чтобы обновить значение столбца ...

Вот запрос

Begin 
update tableX 
set columnY=1 
where rowId=446 
end 

if (@@ERROR=0) 
begin  
    select columnY from tableX where rowId=446 
end 

go 

В настоящее время этот запрос возвращает значение Null, хотя, насколько мне известно, он должен (это было бы желаемое поведение) возвращаемое значение 1

Я не получаю (и пока - не повезло найти что-нибудь об этой проблеме в сети), в чем проблема ... Я попытался добавить еще несколько столбцов, но они также получили это странное поведение - невозможно обновить значение столбца, но при запуске запроса обновления не возникает ошибка ...

+1

Я не знаю, SQL Server, но они не имеют сделок, и поэтому COMMIT заявление ? – Aganju

+0

Вы проверили, существует ли строка с 'rowId'? Выполните этот 'select * from tableX, где rowId = 446', и посмотрите, что он возвращает –

+0

@JorgeCampos, строка существует, я проверил ее – Prokurors

ответ

1

Я думаю, ошибка в другом месте ... Может быть, триггер в вашем столе ???

Пробовал так:

CREATE TABLE tableX(rowId INT,columnY INT); 
INSERT INTO tableX VALUES(446,0); 

select columnY from tableX where rowId=446 

Begin 
update tableX 
set columnY=1 
where rowId=446 
end 

if (@@ERROR=0) 
begin  
    select columnY from tableX where rowId=446 
end 
GO 

DROP TABLE tableX; 

Результат - как и ожидалось - первый 0, а затем 1

+0

Спасибо большое! :) Вы были правы - появился триггер с 'INSTEAD OF UPDATE' - я не сделал этого сейчас, чтобы было возможно переопределить запрос на обновление с помощью триггера. Еще раз спасибо! :) – Prokurors

Смежные вопросы