Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

tiapko avatar tiapko 31 Точки

Problem 21. *Massive Shopping - относно позицията на commit

Имам един въпрос относно позицията на commit-а и по-скоро за неговата позиция, докато писах този код: http://pastebin.com/BNgFxRx2 (ред 30)

 

Защо не се позволява следния синтаксис (пародия на псевдокод):

begin transaction

if (succeeded)

 -- insert something

else rollback

commit

 

 идеята е, че не коммитвам след CRUD операциите, а след като свърши if-a. След като промених кода на това  (пародия на псевдокод):

 

begin transaction

if (succeeded)

 -- insert something

commit

else rollback

 

То всичко проработи. Идеята ми беше, че изпълнението на кода винаги ще мине през if-a и ако не ролбекне да комитне, но не в самия if, а след като мине през него(със сигурност ще мине през тази част на кода, ако не роллбекне).

 

Та въпроса ми е, защо тези две логически идентични операции не са позволени.

 

 

 

Тагове:
0
Module: C# DB
ZornitsaSerbezova avatar ZornitsaSerbezova 455 Точки

if (succeeded)

 -- insert something

else rollback

commit

Не може така, защото ако условието на if не се изпълнява, ще се изпълнят и двете: камит и ролбек. Не мисля, че може да изпълниш и двете.

0
Gesh4o avatar Gesh4o Trainer 305 Точки

Здравейте,
Примера на колежката ясно показва, че двете операции НЕ са еднакви логически. Също така действията на ROLLBACK и COMMIT си противоречат относно дали трябва да се запази една промяна или не (COMMIT-a запазва всички промени, правени по базата, а ROLLBACK-a напротив - връща всички промени обратно). В този смисъл не би трябвало в един случай да използваме и двете операции, защото се получава двусмислие.

Поздрави! :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.