Фиксация и откат с использованием атомарного ключевого слова

Я работаю над sybase isql. У меня есть набор утверждений об обновлении, которые должны быть либо успешными, либо отточенными. Для этого я пытаюсь выполнить с помощью атомарной функции sybase. Но он показывает ошибку как «неправильный синтаксис рядом с« атомным »,« концом ».

begin atomic
update abc 
set def = q
update xyz
set xyz = p
end

ase isql не показывает atomic как ключевое слово. Разве sybase не поддерживает ключевое слово atomic?


person 10hero    schedule 11.04.2014    source источник


Ответы (1)


Для вашего решения вы должны использовать транзакцию, как показано ниже.

begin tran atomic
update abc 
set def = q

if @@error <> 0 
rollback tran atomic

update xyz
set xyz = p

if @@error <> 0 
rollback tran atomic

commit tran atomic

Вы можете использовать транзакцию без слова Atomic

person Robert    schedule 11.04.2014
comment
Привет, спасибо за ваш ответ. Но здесь я спрашиваю об атомарном блоке операторов в sybase. Условие заключалось в том, что если приведенный выше оператор не будет работать, все остальные операторы обновления должны откатиться. - person 10hero; 11.04.2014
comment
@ 10hero Над кодом делайте, что хотите. Если одно из утверждений не работает, все изменения будут отменены. - person Robert; 11.04.2014