Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Вниз

транзакции   Найти похожие ветки 

 
X5   (2009-02-25 16:35) [0]

Как литературно называют транзакцию объявленную в тексте SQL запроса.


 
Медвежонок Пятачок ©   (2009-02-25 16:39) [1]

"синьорита транзакция"


 
Palladin ©   (2009-02-25 16:42) [2]

"Транзакция, объявленная в тексте SQL запроса"


 
Johnmen ©   (2009-02-25 16:44) [3]


> Как литературно называют транзакцию объявленную в тексте
> SQL запроса.

Бред.


 
Sergey13 ©   (2009-02-25 16:50) [4]

> [0] X5   (25.02.09 16:35)

Литературно никак, только по матерному. Привести пример?


 
Ega23 ©   (2009-02-25 17:22) [5]

BEGIN TRAN Tran0001;
BEGIN TRAN Tran0002;
.....
BEGIN TRAN TranFFFF;


 
clickmaker ©   (2009-02-25 18:53) [6]

"логическая единица работы, состоящая из запроса (например, к базе данных) и получения результатов его обработки, которая обеспечивает одновременный доступ к БД многих пользователей и обладает свойством атомарности, объявленная в тексте SQL запроса"


 
Sergey13 ©   (2009-02-26 08:42) [7]

> [6] clickmaker ©   (25.02.09 18:53)

> состоящая из запроса (например, к базе данных) и получения результатов его обработки
А при чем тут получение результата?

> которая обеспечивает одновременный доступ к БД многих пользователей
ИМХО она обеспечивает (должна) только целостность данных и ничего более.

> объявленная в тексте SQL запроса
В тексте запроса ее по моему объявить нельзя. Это по любому будет уже другой запрос.

Я бы сформулировал так.
Логическая единица работы, переводящая объект из одного согласованного состояния в другое согласованное состояние.


 
MsGuns ©   (2009-02-26 09:22) [8]

>Sergey13 ©   (26.02.09 08:42) [7]
>А при чем тут получение результата?

Притом, что итогом выполнения (невыполнения) ЛЮБОЙ транзакции является получение результата, который и "поставляется" "заказчику" оной

>ИМХО она обеспечивает (должна) только целостность данных и ничего более.

Отнюдь. С точки зрения сервера, собственно оперирующего транзакцией, никакой целостности транзакция не  обеспечивает. С точки зрения программиста, салгоритмизировавшего логику транзакции, - да. Все эти определения транзакции, построенные на фразе типа "из одного целостного состояния в другое" не более чем силлогизм, по мнению авторов помогающий понять непонимающим.

>В тексте запроса ее по моему объявить нельзя. Это по любому будет уже другой запрос.

Можно. Не будет. Правда, насколько знаю, не для всех серверов.

>Я бы сформулировал так.
>Логическая единица работы, переводящая объект из одного согласованного состояния в другое >согласованное состояние.

Еще одна попытка дать определение слову "колесо" ? Если так, то имеется одна существенная "пробоина", а именно - "ПЫТАЮЩАЯСЯ" перевести. Как говорят в Одессе, ощутите разницы


 
Sergey13 ©   (2009-02-26 09:43) [9]

> [8] MsGuns ©   (26.02.09 09:22)
> Притом, что итогом выполнения (невыполнения) ЛЮБОЙ транзакции
> является получение результата, который и "поставляется"
> "заказчику" оной

Я, получив деньги из банкомата, могу и не получать чек, на котором отражены результаты. Само получение денег - это только часть транзакции.
Запустить транзакцию можно и из командной строки например.

> С точки зрения сервера
Ты с ним говорил на эту тему? 8-)
Сервер сам по себе вообще ничего не обеспечивает кроме хранения чего-то и предоставления доступа к этому чему-то.

> Если так, то имеется одна существенная "пробоина", а именно
> - "ПЫТАЮЩАЯСЯ" перевести. Как говорят в Одессе, ощутите
> разницы

Это словоблудие. Скажи хоть "делающая вид, что пытается перевести", результат от этого не изменится.


 
MsGuns ©   (2009-02-26 10:15) [10]

>Это словоблудие. Скажи хоть "делающая вид, что пытается перевести", результат от этого не >изменится.

Вот эта фраза про "деление вида" и есть словоблдудие. ОТКАТ транзакции есть не менее концептуальная вещь в КС, чем сама транзакция. Это и подразумевалось в той фразе, которую ты обозвал нехорошим словом :)


 
KSergey ©   (2009-02-26 10:19) [11]

> Sergey13 ©   (26.02.09 09:43) [9]
> Я, получив деньги из банкомата, могу и не получать чек,

Безусловно, однако банкомат свою транзакцию отработает честно и чек выдаст. А принимать результаты или нет - это уже не важно. Деньги тоже можно не брать, к стати.
Как и результат выполнения select внутри транзакции. Но сервер эти результаты все равно выкатит.

>> С точки зрения сервера
> Сервер сам по себе вообще ничего не обеспечивает кроме хранения чего-то и предоставления доступа к этому чему-то.

Именно с точки зрения сервера и существует транзакция, т.к. именно сервер ими и управляет, а вовсе не клиент!
И основное дял SQL-сервера - это не просто "хранить" а именно обеспечаваить работоспособность транзакций и гарантировать, что транзакция будет либо вся выполнена, либо вся откачена. Последнее, к стати, сложнее.


 
Sergey13 ©   (2009-02-26 10:37) [12]

> [10] MsGuns ©   (26.02.09 10:15)
> ОТКАТ транзакции есть не менее концептуальная вещь в КС, чем сама транзакция

ОТКАТ вообще вещь концептуальная. И не только в КС. 8-)
Вот у водопроводного крана какая функция важнее - открывать воду или закрывать? 8-)


 
Johnmen ©   (2009-02-26 10:39) [13]


> MsGuns ©   (26.02.09 09:22) [8]
> > В тексте запроса ее по моему объявить нельзя. Это по любому будет уже другой запрос.
> Можно. Не будет. Правда, насколько знаю, не для всех серверов.

Пример пожалуйста. Как это в ТЕКСТЕ ЗАПРОСА.


 
Медвежонок Пятачок ©   (2009-02-26 10:42) [14]

Безусловно, однако банкомат свою транзакцию отработает честно и чек выдаст. А принимать результаты или нет - это уже не важно. Деньги тоже можно не брать, к стати.

Если не возьмешь, транзакция списания с твоего счета все равно не откатится. Просто будет еще одна транзакция в которой бабки будут переведены на счет кассеты режекта


 
Johnmen ©   (2009-02-26 10:43) [15]


>  Все эти определения транзакции, построенные на фразе типа
> "из одного целостного состояния в другое" не более чем силлогизм

Это "фраза" одна из необходимого и достаточного определения транзакции.
Причем тут силлогизм?


 
Sergey13 ©   (2009-02-26 10:47) [16]

> [11] KSergey ©   (26.02.09 10:19)
> Но сервер эти результаты все равно выкатит.

Это его личное дело. Я не против.
Я же не говорю, что "получение результатов его обработки" никому не нужно и не имеет никакого значения, я говорю, что ИМХО это действие не входит в рамки самой транзакции. Это анализ этой, уже произведенной, транзакции.

> [11] KSergey ©   (26.02.09 10:19)
> либо вся откачена.

А сервер это ВСЕ сам определяет? Откуда он про это ВСЕ знает? Он посто честно выполняет последовательность команд. И только программист указывает ему, что вот эту последовательность команд надо или выполнить ВСЮ, или откатить ВСЮ.


 
KSergey ©   (2009-02-26 12:42) [17]

> Sergey13 ©   (26.02.09 10:47) [16]
> только программист указывает ему, что вот эту последовательность  команд надо или выполнить ВСЮ, или откатить ВСЮ.

нифига подобного.
программист (т.е. клиентская сторона для сервера) может только слезно просить и/или умолять. А выполнить или нет команду сервер решает сам, по ситуации.


 
KSergey ©   (2009-02-26 12:47) [18]

> Медвежонок Пятачок ©   (26.02.09 10:42) [14]
> Если не возьмешь, транзакция списания с твоего счета все равно не откатится. Просто будет еще одна транзакция в которой
> бабки будут переведены на счет кассеты режекта

Разумеется. Т.к. банкомат выполнил все операции в полном объеме. Вот если бы деньги застряли внутри банкомата - тогда (по дее) должнен бы откатить (если не откатывает и почему - здесь не важно; не будем об этом).
А так - он выполнил все команды, полностью. А то, что кто-то не воспользовался результатом - его не волнует. Как и SQL-сервер.


 
KSergey ©   (2009-02-26 12:52) [19]

> Johnmen ©   (26.02.09 10:43) [15]
> > "из одного целостного состояния в другое" не более чем силлогизм
>
> Это "фраза" одна из необходимого и достаточного определения  транзакции.

Транзакции вообще - наверное да.
Транзакции в смысле для SQL-сервера - не думаю, оно какое-то сильно "клиентское" это определение.
Для сервера не важно целостное состояние БД или нет с точки зрения банковского маклера....

хотя я вот подумал: если под транзакцией понимать в том числе и внутренние "атомарные" операции сервера (например при добавлении записи обязательно дополнить индексы) - тогда наверное да, применять к такой транзакции термин "целостность" имеет смысл...

как всегда спор о терминах, короче.


 
Anatoly Podgoretsky ©   (2009-02-26 14:52) [20]

> Sergey13  (26.02.2009 8:42:07)  [7]

Можно просто перевести слово.2 - лишь бы не работать.


 
Anatoly Podgoretsky ©   (2009-02-26 14:52) [21]

> Sergey13  (26.02.2009 10:37:12)  [12]

Целостное действие, имеющее начало (открыть) и конец (закрыть).
Это неделимо


 
Sergey13 ©   (2009-02-26 15:28) [22]

> [17] KSergey ©   (26.02.09 12:42)
> программист (т.е. клиентская сторона для сервера) может только слезно просить и/или умолять.

Ну не знаю. Видимо у нас разный опыт. Я обычно просто посылаю команды. 8-)

> [19] KSergey ©   (26.02.09 12:52)
> Для сервера не важно целостное состояние БД или нет с точки зрения банковского маклера....
Совершенно правильно. Именно поэтому точку зрения банковского маклера программист и обязан донести до сервера в виде последовательности команд, обрамленных транзакцией.

> тогда наверное да, применять к такой транзакции термин "целостность" имеет смысл...
Т.е. списание денег со счета и НЕзачисление их на другой при корректном индексировании списаний - это нормальная транзакция не нарушающая целостность данных?


 
MsGuns ©   (2009-02-26 15:32) [23]

>Johnmen ©   (26.02.09 10:39) [13]
>Пример пожалуйста. Как это в ТЕКСТЕ ЗАПРОСА.

TSQL:
 
BEGIN TRAN
UPDATE...
DELETE ...
IF ...
  COMMIT TRAN
ELSE
 ROLLBACK TRAN


>Anatoly Podgoretsky ©   (26.02.09 14:52) [21]
>Целостное действие, имеющее начало (открыть) и конец (закрыть).
>Это неделимо

И очень даже делимо. Например в системах, не поддерживающих транзакции в "полной" мере. Как в парадоксе - термин такой есть и типа способы управления есть, а вот "конца" может и не быть, Так же как и возврата в "начало"

А вообще нужно, конечно, определиться с терминологией. Джонмэн вон, вероятно, под запросом имел в виду простейший запрос на выборку или на изменение в единственной таблице базы
И прикалывается :)


 
Anatoly Podgoretsky ©   (2009-02-26 15:42) [24]

> MsGuns  (26.02.2009 15:32:23)  [23]

Парадокс не поддерживает транзакций, там это видимость.
Это провокация говорить об транзакциях в контексте Парадокса.


 
MsGuns ©   (2009-02-26 15:44) [25]

>Sergey13 ©   (26.02.09 15:28) [22]
>Ну не знаю. Видимо у нас разный опыт. Я обычно просто посылаю команды. 8-)

И по барабану выполнятся они или нет ?

>Именно поэтому точку зрения банковского маклера программист и обязан донести до сервера в >виде последовательности команд, обрамленных транзакцией.

Транзакция не рамка для "обрамления", а средство для ЯВНОГО указания серверу что вот с этого момента все изменения "запоминать" для того чтобы по команде либо зафиксировать их в БД (подтвердить), изменив тем  самым ХРАНИМУЮ в БД информацию, либо отменить (откатить), вернув ХРАНИМУЮ в БД информацию в то сосотяние, которое она имела ДО запуска транзакции.

Что касается "рычагов" для транзакций. Существуют механизмы автоматического транзакционирования, например триггеры, которые ВСЕГДА работают независимо от того, явно ли был "завернут" в транзакцию соотв-й запрос (скрипт, хранимка и т.д.)
Однако также имеется механизм явного управления  транзакцией "извне", т.е. когда серверу явно указывается когда ПАКЕТ начинается и когда заканчивается. Такое управление вполне можно реализовать на клиенте в случаях, когда по каким-то причинам алгоритмы, производящие в БД изменения, не были прописаны в бизнес-логику сервера, но тем не менее должны быть соблюдены.


 
Sergey13 ©   (2009-02-26 16:13) [26]

> [25] MsGuns ©   (26.02.09 15:44)
> И по барабану выполнятся они или нет ?

На практике нет конечно, не по барабану. Но вполне могу представить систему, где важно просто пульнуть команду. Какой нибудь терминал или вроде того.

> Транзакция не рамка для "обрамления", а средство для ЯВНОГО указания серверу
Да хоть горшком назови. 8-)

> Существуют механизмы автоматического транзакционирования
Не понял этого твоего термина. Т.е. я догадываюсь что тригер работает в контексте текущей транзакции, но вот автоматизация то тут при чем - не понял.


 
KSergey ©   (2009-02-26 16:49) [27]

> Sergey13 ©   (26.02.09 16:13) [26]
> > Существуют механизмы автоматического транзакционирования
> Не понял этого твоего термина.

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


 
Sergey13 ©   (2009-02-26 16:57) [28]

> [27] KSergey ©   (26.02.09 16:49)

Гугл на "автоматическое транзакционирование" выдал только 3 ссылки, к БД как бы мало относящихся. В какой книжке прочитать посоветуешь?


 
KSergey ©   (2009-02-26 17:04) [29]

я читал в книжке для подготовки к экзамену по MS SQL какой-то версии, издательства MS Press, красненькие такие :)


 
Johnmen ©   (2009-02-26 17:19) [30]


> MsGuns ©   (26.02.09 15:32) [23]
> >Johnmen ©   (26.02.09 10:39) [13] >Пример пожалуйста. Как
> это в ТЕКСТЕ ЗАПРОСА. TSQL:   BEGIN TRAN UPDATE... DELETE
> ... IF ...   COMMIT TRAN ELSE  ROLLBACK TRAN
> ..........................
> А вообще нужно, конечно, определиться с терминологией. Джонмэн
> вон, вероятно, под запросом имел в виду простейший запрос
> на выборку или на изменение в единственной таблице базы
> И прикалывается :)

Не надо ни с чем определяться. Всё уже определено в определениях.
ЗЫ
И это не прикол :)

> KSergey ©   (26.02.09 12:52) [19]
> если под транзакцией понимать

Под транзакцией, да и под чем угодно, понимается то, что определено в определении. Без всяких "если".
ЗЫ
Если под отрезком прямой линии понимать такой кусочек окружности...


 
Petr V. Abramov ©   (2009-02-26 17:19) [31]


> KSergey ©   (26.02.09 17:04) [29]

там и не такое напишут, вернее, напереводят.


 
KSergey ©   (2009-02-26 17:29) [32]

> Petr V. Abramov ©   (26.02.09 17:19) [31]
> там и не такое напишут, вернее, напереводят.

епрст, ну я ж не про конкретный термин.
очевидно, что он неудачен, потому Sergey13 по нему ничего и не нашел.
Но сам факт-то автотранзакций на самом деле имеет место быть. Или есть возражения?


 
KSergey ©   (2009-02-26 17:32) [33]

> Johnmen ©   (26.02.09 17:19) [30]
> Под транзакцией, да и под чем угодно, понимается то, что определено в определении

здрасти я ваша тетя... Из гугля: "...не проводил транзакций, связанных с приемом заявок и осуществлением сделок..."
Это к тому, что термин "транзакция" -  он как бы не только в отношении SQL серверов применяется, потому определения всегда нужны, и лучше их озвучить, а то как всегда каждый думает, что именно его определения - то, которое подразумевается всеми. ага, три раза.


 
Petr V. Abramov ©   (2009-02-26 17:33) [34]


> KSergey ©   (26.02.09 17:29) [32]
> Или есть возражения?

ничего не могу сказать, как и факте Ктулху, null :)
может и есть, но термин такой я в первый раз слышу.
может, не авто, а автономные?


 
KSergey ©   (2009-02-26 17:38) [35]

ну в смысле, что каждый SQL-запрос неявно обрамляется транзакцией, и если на таблицу навешаны тригера, например, - то можно кинуть в одинм из них ROLLBACK - запрос завершится ошибкой и все благополучно откатит. С хранимками тоже чего-то есть, но много тонкостей по поводу как раз определения рамок этих транзакций (в пределах batch, кажется?), и как раз описанию как определить этот batch аккуратно описано.

вот я о чем, про термин сказать точнее не берусь.


 
MsGuns ©   (2009-02-26 17:38) [36]

>Sergey13 ©   (26.02.09 16:57) [28]
>Гугл на "автоматическое транзакционирование" выдал только 3 ссылки, к БД как бы мало >относящихся. В какой книжке прочитать посоветуешь?

Блин, Серый, вот уж не думал что тебе надо объяснять прописные истины или ты прикалываешься ?

Такого термина, возможно, и не существует ибо это УСЛОВНЫЙ термин, придуманный вот прям мною и прям здеся :) Но смысл у него следующий:

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

Бизнес-логика НЕ ЗАВИСИТ от клиента и задает ПОСТОЯННЫЕ правила поведения сервера при внесении изменений в таблицы БД или метаданные сервера - их НЕЛЬЗЯ ИЗМЕНИТЬ - можно только применять или нет. К типичным примерам можно отнести механизмы триггеров, контроля ссылочной целостности, генераторы (последовательности), каскадные удаления и т.д. Контроль транзакций, в контексте которых такие алгогритмы выполняются, НЕЛЬЗЯ осуществлять извне (с клиента). Именно поэтому я и обозвал их АВТОМАТИЧЕСКИМИ.

Задаваемые извне алгоритмы серверу неизвестны, точнее неизвестно ЧТО СЛЕДУЕТ СЧИТАТЬ ТРАНЗАКЦИЕЙ. Как пример, каскадное удаление в таблице, где оно не "заложено" на сервере - клиент самостоятельно должен сформировать, передать серверу и проконтролировать результаты. И именно клиент в данном случае решает следует ли подтвердить изменения или же вернуть все или часть "на место". Следовательно, такие транзакции нельзя отнести к автоматическим.

На деле, конечно, чаще всего встречается смесь механизмов: чем-то управляет клиент, чем-то сам сервер, но практически все сервера оставляют право последнего слова за клиентом. Т.е. можно сказать что подтверждение или откат "автоматических" изменений зависит от "решения" извне.
Другими словами, если есть некий алгоритм изменения в БД, в рамках которого сервер что-то меняет   АВТОМАТИЧЕСКИ (без указания или санкции клиента), то эти изменения могут быть откачены если будет откачена заданная явно клиентом транзакция. Причем этот откат автоматических изменений также будет выполнен автоматически.

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


 
MsGuns ©   (2009-02-26 17:43) [37]

>Johnmen ©   (26.02.09 17:19) [30]
>Не надо ни с чем определяться. Всё уже определено в определениях.
>ЗЫ

Точна ? таки ВСЁ ?

>Под транзакцией, да и под чем угодно, понимается то, что определено в определении. Без всяких >"если".

Определение в студию ! Я к примеру их читал десятки. И все правильные и неправильные одновременно.

>Если под отрезком прямой линии понимать такой кусочек окружности...

Вместо четкого и ясного ответа сделать вумное лицо и ченить эдакое многозначительное загнуть все горазды :)


 
Johnmen ©   (2009-02-26 17:46) [38]


> KSergey ©   (26.02.09 17:32) [33]

Твой этот пост можно расценить, как дуркование. Типа обсудить на форуме овощеводов, как сподручнее дать по репе лучшему другу...


 
Petr V. Abramov ©   (2009-02-26 17:50) [39]


> Johnmen ©   (26.02.09 17:46) [38]

ну нельзя же так смешить в рабочее время :)))


 
Johnmen ©   (2009-02-26 17:51) [40]


> MsGuns ©   (26.02.09 17:43) [37]
> Точна ?

Точняк.

> таки ВСЁ ?

таки да.

> И все правильные и неправильные одновременно.

Это ты как определил? Руководствуясь пролетарским самосознанием, похоже...:)

> Вместо четкого и ясного ответа сделать вумное лицо и ченить
> эдакое многозначительное загнуть все горазды :)

Идиоматические обороты и аллегорические выражения не всем доступны.


 
MsGuns ©   (2009-02-26 19:38) [41]

>Johnmen ©   (26.02.09 17:51) [40]

Ответ в твоем стиле.
И, главное, убедительно так :)


 
KSergey ©   (2009-02-27 05:49) [42]

> Johnmen ©   (26.02.09 17:46) [38]
> Твой этот пост можно расценить, как дуркование.

Ага, есть моё мнение и не правильное.
Свободен, говорить более не о чем.


 
Sergey13 ©   (2009-02-27 10:12) [43]

> [36] MsGuns ©   (26.02.09 17:38)
> Блин, Серый, вот уж не думал что тебе надо объяснять прописные истины
Блин, Серый, мне кажется, что ты истины эти "прописные" придумал тоже тут. 8-)

> Алгоритмика сервера, в общем случае, может определяться
> двумя способами или их комбинацией - аогоритмами, прописанными
> собственно на сервере (бизнес-логика сервера) или задаваемыми
> извне (с клиента, сервисом перекачки..)

Нет у сервера никакой алгоритмики. ИИ пока вроде не изобрели. Сервер просто выполняет команды, посылаемые клиентом. Часть кода может быть расположена и выполняться на сервере часть на клиенте. Но все равно это части прикладного ПО.

Единственный алгоритм сервера - ВСЕ изменения проводятся в рамках транзакций. Транзакциями можно управлять явно или неявно, т.е. фактически не управлять. Неявно транзакция открывается при начале изменения данных. Закрывается неявно при закрытии сессии и в некоторых других случаях. Другое дело, что некоторые клиентские программы (библиотеки доступа и т.п.) могут отслеживать эти вещи и указывать программисту, что надо бы с этим как то определиться.
В оракле например можно зайти стандартной программой SQLPlus и всю сессию работать в одной транзакции (ну насколько ресурсов хватит) если явно не давать commit или rollback. Это не значит, что так НАДО, делать, но так МОЖНО делать. Транзакцию НЕЯВНО завершает либо любой DDL запрос либо закрытие сессии.

> К типичным примерам можно отнести механизмы триггеров, контроля ссылочной целостности

А что тригер работает в контексте каких то своих особых транзакций? Мне всегда казалось что в контексте текущей. Иначе работа была бы невозможна. Именно поэтому, насколько я помню, в оракле например нельзя в теле тригера явно управлять транзакциями - он просто не откомпилируется. Можно запустить автономную транзакцию, но это другая тема.
И в ХП также (если и возможно синтаксически) не надо управлять транзакциями, ибо ХП могут вызываться как автономно таки в составе других ХП или из других мест пакетно. Поэтому рулить транзакциями надо ТОЛЬКО из клиента или самого верхнего уровня ХП если запуск происходит например из джоба.

> Контроль транзакций, в контексте которых такие алгогритмы выполняются, НЕЛЬЗЯ осуществлять извне (с клиента).
Как это? Если я удалил накладную (и соответственно все ее соствляющие) это нельзя откатить?


 
MsGuns ©   (2009-02-27 10:33) [44]

>Sergey13 ©   (27.02.09 10:12) [43]
>Блин, Серый, мне кажется, что ты истины эти "прописные" придумал тоже тут. 8-)

Куда и когда ехать за нобелевкой ? :)

>Нет у сервера никакой алгоритмики. ИИ пока вроде не изобрели. Сервер просто выполняет >команды, посылаемые клиентом. Часть кода может быть расположена и выполняться на сервере >часть на клиенте. Но все равно это части прикладного ПО.

Неужели ?
У процессора тоже нет никакой алгоритмика - как же жто он, зараза, работает ?

Сервер выполняет не только команды, полученные от клиента, но и те, которые заложены в бизнес-логике SQL-программистом.  Это уже не ПРИКЛАДНОЙ уровень, а скорее системный, т.к. не зависит от клиента. Т.е. считать "программы", заложенные в бизнес-логику, прикладными, все равно, что думать, что пассажир направляет поезд из Мухосранска в Урюпинск, а машинист, стрелочники и даже рельсы тупо исполняют его команды :)

>Единственный алгоритм сервера - ВСЕ изменения проводятся в рамках транзакций. Транзакциями >можно управлять явно или неявно, т.е. фактически не управлять.

Нельзя не управлять транзакциями. Если в программе нет явного управления, используется неявное, но используется.

>Неявно транзакция открывается при начале изменения данных.

Не обязательно. Можно послать тучу запросов на изменение и при этом транзакция не откроется, т.к. уже была открыта например селектом

>Закрывается неявно при закрытии сессии и в некоторых других случаях.

Опять не всегда. Зависит от множества факторов, влияющих на параметры соединения, например от типа курсора, способа соединения (удаленный, локальный).

>Транзакцию НЕЯВНО завершает либо любой DDL запрос либо закрытие сессии.

Вот с этим почти соглашусь

>А что тригер работает в контексте каких то своих особых транзакций? Мне всегда казалось что в контексте текущей. Иначе работа была бы невозможна.

Ну да, и я о том же

>И в ХП также (если и возможно синтаксически) не надо управлять транзакциями, ибо ХП могут >вызываться как автономно таки в составе других ХП или из других мест пакетно. Поэтому рулить >транзакциями надо ТОЛЬКО из клиента или самого верхнего уровня ХП если запуск происходит >например из джоба.

А вот это уже твое ИМХО, причем весьма спорное. Есть апологеты выноса на сторону сервера всего чего только возможно - в этом случае управление транзакциями выполняется явно там, где это необходимо средствами сиквеля.

>> Контроль транзакций, в контексте которых такие алгогритмы выполняются, НЕЛЬЗЯ >>осуществлять извне (с клиента).

>Как это? Если я удалил накладную (и соответственно все ее соствляющие) это нельзя откатить?

Нет, это значит что если ты откатываешь накладную, то не сможешь "отменить" возврат товара на карточку, если таковая операция была предусмотрена, например, триггером. Т.е. коррекция остатка выполняется АВТОМАТИЧЕСКИ сервером без всякой санкции на то клиента. Это и имелось в виду


 
Игорь Шевченко ©   (2009-02-27 11:07) [45]


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


Это в какой СУБД такое ? И что за SELECT, который "открывает транзакцию" ?


 
Sergey13 ©   (2009-02-27 11:13) [46]

> [44] MsGuns ©   (27.02.09 10:33)
> но и те, которые заложены в бизнес-логике SQL-программистом

ИМХО у тебя какое то обожествление этой "бизнес-логики". Если я некоторые свои приблуды вынесу в DLL-ку, то эта DLL-ка будет уже системной?

> Нельзя не управлять транзакциями. Если в программе нет явного
> управления, используется неявное, но используется.

Именно это я и имел в виду. "фактически не управлять" относилось к программисту, раз он явно не прописал коммит/ролбэк.

> т.к. уже была открыта например селектом
Это свойство ИБ (может и не только) - транзакция на чтение, а не всех серверов, насколько я знаю.

> Вот с этим почти соглашусь
Ну хоть что-то! 8-)

> А вот это уже твое ИМХО, причем весьма спорное.
Этого я никогда не отрицал! 8-)

> если таковая операция была предусмотрена, например, триггером.
Почему, если тригер выполняется в этой же транзакции?


 
Johnmen ©   (2009-02-27 11:16) [47]


> Игорь Шевченко ©   (27.02.09 11:07) [45]

Это не уровень сервера, это уровень клиента. Который неявно вполне себе может (и даже должен в отсутствии явного указания) стартовать тр-ю при (перед, ес-но) выполнении селективного, да и любого другого запроса.


 
Johnmen ©   (2009-02-27 11:19) [48]


> MsGuns ©   (27.02.09 10:33) [44]
> Вот с этим почти соглашусь

Напрасно, что согласишься. И "почти" какое-то вялое...:)


 
Игорь Шевченко ©   (2009-02-27 11:30) [49]

Johnmen ©   (27.02.09 11:16) [47]

Что написано в MsGuns[44]

">Неявно транзакция открывается при начале изменения данных.

Не обязательно. Можно послать тучу запросов на изменение и при этом транзакция не откроется, т.к. уже была открыта например селектом"

Что написано тобой:


> Это не уровень сервера, это уровень клиента. Который неявно
> вполне себе может (и даже должен в отсутствии явного указания)
> стартовать тр-ю при (перед, ес-но) выполнении селективного,
>  да и любого другого запроса


Я понимаю что сколько СУБД, столько и механизмов, но давай в таком случае СУБД конкретизировать, договорились ?

Потому что, например, для Оракла высказывание MsGuns[44] неверно.


 
MsGuns ©   (2009-02-27 11:32) [50]

>Игорь Шевченко ©   (27.02.09 11:07) [45]
>Это в какой СУБД такое ? И что за SELECT, который "открывает транзакцию" ?

В любой.
Типичный пример для ХП когда идет выборка селектом и для каждой считанной записи выполняется некая обработка, в том числе и изменяющая данные в таблицах.
Транзакция открывается (если, конечно, не была открыта ранее) непосредственно перед началом выборки.


 
MsGuns ©   (2009-02-27 11:38) [51]

>Потому что, например, для Оракла высказывание MsGuns[44] неверно.

Не верю (с)
Иначе я дурак либо одно из двух :)

получается что ежели я перед изменением чего-то там выбираю данные из базы, то никакой транзакции нема, а вот когда ПО ЭТИМ ВЫБРАННЫМ записям начинаю делать апдэйты, то как бы транзакция стратует. Эге ж ?
Тогда, внимание, вопрос ! А кто же мне гарантирует, что данные, полученные селектом вне всяких транзакций, т.е. как бы "левые", не изменились и мои апдэйты тупо станут не корректны ?

Неувязочка у тебя какая-то :)


 
Игорь Шевченко ©   (2009-02-27 11:44) [52]

MsGuns ©   (27.02.09 11:38) [51]


> Не верю (с)


Твое полное право не верить.


> Неувязочка у тебя какая-то :)


Неувязочка с твоими словами ? Это не страшно.


 
MsGuns ©   (2009-02-27 11:48) [53]

>Игорь Шевченко ©   (27.02.09 11:44) [52]
>Неувязочка с твоими словами ? Это не страшно.

Неувязочка в твоих умазаключениях или сути выражения их словами - как тебе будет угодно
А страшно или нет - тебе решать


 
Игорь Шевченко ©   (2009-02-27 11:58) [54]

MsGuns ©   (27.02.09 11:48) [53]


> Неувязочка в твоих умазаключениях или сути выражения их
> словами - как тебе будет угодно


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

Если говорить о любой СУБД - транзакция есть набор действий, переводящий базу данных из одного согласованного состояния в другое - откуда и куда базу данных переводит SELECT - это уже на совести утвеждающего про любую СУБД. Чем поведение СУБД при завершении такой транзакции по COMMIT отличается от поведения при завершении по ROLLBACK - это тоже на совести утверждающего про любую СУБД.


 
Johnmen ©   (2009-02-27 12:01) [55]


> Игорь Шевченко ©   (27.02.09 11:58) [54]
> В оракле SELECT транзакцию не начинает.

А кто начинает?


 
Игорь Шевченко ©   (2009-02-27 12:06) [56]

Johnmen ©   (27.02.09 12:01) [55]

Любой оператор изменения данных


 
MsGuns ©   (2009-02-27 12:09) [57]

>Игорь Шевченко ©   (27.02.09 11:58) [54]
>В оракле SELECT транзакцию не начинает. Дальше ты можешь спорить, ловить неувязки сколько угодно, но SELECT в оракле от этого транзакцию не начнет.

Никогда и ни при каких обстоятельствах ? И глюки в апдейтах, о которых я говорил, вполне реальны ?
Или оракл насквозь глюкавый или .. ну ты понял :)

>Если говорить о любой СУБД - транзакция есть набор действий, переводящий базу данных из одного согласованного состояния в другое

Нет и еще раз нет, если под словом "согласованный" подразумевается именно "согласованный", т.е. ЛОГИЧЕСКИ корректный.

>откуда и куда базу данных переводит SELECT - это уже на совести утвеждающего про любую СУБД.

Сам селект никуда ничего не переводит, но он определяет состояние БД на некий момент, НАЧИНАЯ С КОТОРОГО ПРОГРАММИСТ МОЖЕТ БЫТЬ УВЕРЕН, ЧТО ДАННЫЕ НИКЕМ, КРОМЕ ЕГО САМОГО, ГАРАНТИРОВАННО НЕ БУДУТ ИЗМЕНЕНЫ. О чем "уведомляет" сервер явно, если все, что будет происходит после, определяется вовне на клиенте, или неявно, если все последующие действия будут выполнены в нижеследующем коде, например ХП

Ты хочешь поспорить с этим утверждением ?

>Чем поведение СУБД при завершении такой транзакции по COMMIT отличается от поведения при >завершении по ROLLBACK - это тоже на совести утверждающего про любую СУБД.

Ты сам понял что этим сказал ?


 
MsGuns ©   (2009-02-27 12:15) [58]

>Блин, во избежание очередной порции критики вношу необходимую поправку:
Фразу
"О чем "уведомляет" сервер явно, если все, что будет происходит после, определяется вовне на клиенте" следует читать так:

"О чем  сервер ДОЛЖЕН БЫТЬ УВЕДОМЛЕН явно, если все, что будет происходит после, определяется вовне на клиенте"


 
Johnmen ©   (2009-02-27 12:24) [59]


> Игорь Шевченко ©   (27.02.09 12:06) [56]
> Любой оператор изменения данных

Т.е. ты утверждаешь, что селективный запрос вне транзакций, в пустоте?
Я тебя правильно понял?


 
Sergey13 ©   (2009-02-27 12:24) [60]

> [57] MsGuns ©   (27.02.09 12:09)

> но он определяет состояние БД на некий момент, НАЧИНАЯ С
> КОТОРОГО ПРОГРАММИСТ МОЖЕТ БЫТЬ УВЕРЕН, ЧТО ДАННЫЕ НИКЕМ,
> КРОМЕ ЕГО САМОГО, ГАРАНТИРОВАННО НЕ БУДУТ ИЗМЕНЕНЫ.

Сервер выдает данные на МОМЕНТ НАЧАЛА ЗАПРОСА. Ты же не будешь утверждать, что если ты "забрал на клиента" например список подразделений, то никто его больше смотреть и менять не может, пока ты не насмотришься. Если через секунду ты повторишь свою выборку вполне можешь получить и другое состояние списка.


 
MsGuns ©   (2009-02-27 12:31) [61]

>Sergey13 ©   (27.02.09 11:13) [46]
>ИМХО у тебя какое то обожествление этой "бизнес-логики". Если я некоторые свои приблуды вынесу в DLL-ку, то эта DLL-ка будет уже системной?

Видишь ли, в КССУБД скл-сервер играет роль, в чем-то похожую на ОС, поэтому его "бизнес-логика" весьма смахивает на СИСТЕМНЫЕ библиотеки той же винды.

Если твоя длл будет юзаться самой системой, то да, она вполне будет системной :)


 
clickmaker ©   (2009-02-27 12:32) [62]

> селективный запрос вне транзакций, в пустоте?

в ms sql, например, селект может быть выполнен с хинтами. with holdlock, например, что должно гарантировать, что данные не изменятся в момент выборки. Или nolock, что ускоряет запрос, но допускает "грязное" чтение.
Тоже, по сути, вариант транзакции


 
Игорь Шевченко ©   (2009-02-27 12:33) [63]

Johnmen ©   (27.02.09 12:24) [59]


> Т.е. ты утверждаешь, что селективный запрос вне транзакций,
>  в пустоте?


Что есть "пустота" ?


 
Johnmen ©   (2009-02-27 12:36) [64]


> Игорь Шевченко ©   (27.02.09 12:33) [63]

Пустота - это такой вакуум, где ничего и никого нет.
Т.е. ты утверждаешь, что селективный запрос вне транзакций?
Я тебя правильно понял?


 
Игорь Шевченко ©   (2009-02-27 12:39) [65]

Johnmen ©   (27.02.09 12:36) [64]


> Пустота - это такой вакуум, где ничего и никого нет.


А солнце - шар, дающий свет.


> Т.е. ты утверждаешь, что селективный запрос вне транзакций?
>
> Я тебя правильно понял?


Что значит "селективный запрос вне транзакций", я не понимаю твоего вопроса.

SELECT без клаузы FOR UPDATE в Оракле не инициирует начало транзации, в отличие от операторов изменения данных, в том числе к операторам изменения относится и форма SELECT ... FOR UPDATE


 
MsGuns ©   (2009-02-27 12:43) [66]

>Sergey13 ©   (27.02.09 12:24) [60]
>> но он определяет состояние БД на некий момент, НАЧИНАЯ С
>> КОТОРОГО ПРОГРАММИСТ МОЖЕТ БЫТЬ УВЕРЕН, ЧТО ДАННЫЕ НИКЕМ,
>> КРОМЕ ЕГО САМОГО, ГАРАНТИРОВАННО НЕ БУДУТ ИЗМЕНЕНЫ.

>Сервер выдает данные на МОМЕНТ НАЧАЛА ЗАПРОСА. Ты же не будешь утверждать, что если >ты "забрал на клиента" например список подразделений, то никто его больше смотреть и менять >не может, пока ты не насмотришься. Если через секунду ты повторишь свою выборку вполне >можешь получить и другое состояние списка.

Блин, мухи, котлеты, официантка Стеллочка - все в куче.
Если моя прога на КЛИЕНТЕ стартанет ПИШУЩУЮ транзакцию на сервере, а потом будет терпеливо дожидаться пока Маша чего-там настукает на клаве, то сервер также терпеливо будет "сохранять" мне те же самые данные, которые были на старте. Что потом произойдет при коммите и на каком дереве меня за эти художества повесят - это уже не вопрос сервера
Но если прога стартует и завершает читающую транзакцию, извлекающую инфу с сервера на клиента, а затем либо одиночными запросами либо "оптом" из кэша стартует апдэйты, то эти апдэйты будут применяться к той базе, которая уже имеется на момент старта уже этой, пишущей транзакции. Со всеми возможными конфликтами, возникающие потому, что изменяемые данные, например были удалены другим клиентом.
И, наконец, весь процесс чтения и апдэйта данных завернут в бизнес логику. В этом случае клиент просто вызывает соотв-ю ХП, передавая ей что-то-там-что-нужно и ЧТЕНИЕ и ИЗМЕНЕНИЕ данных оформляются в ЕДИНОЙ быстрой транзакции, которая, конечно же, стартует по селекту.


 
Johnmen ©   (2009-02-27 12:45) [67]


> Игорь Шевченко ©   (27.02.09 12:39) [65]
> А солнце - шар, дающий свет.

Не куб - однозначно.

> Что значит "селективный запрос вне транзакций", я не понимаю
> твоего вопроса.

Выполняется ли селективный запрос в рамках транзакции (не важно кем и когда стартованной)?
Если и так непонятно, то можно не отвечать. Я всё пойму.


 
Игорь Шевченко ©   (2009-02-27 12:54) [68]

Johnmen ©   (27.02.09 12:45) [67]


> Выполняется ли селективный запрос в рамках транзакции (не
> важно кем и когда стартованной)?


Если выполняется после оператора изменения данных, без оператора COMMIT или ROLLBACK, то выполняется в рамках транзакции.

А что, ответа "SELECT без клаузы FOR UPDATE в Оракле не инициирует начало транзации, в отличие от операторов изменения данных"
тебе недостаточно?


 
Игорь Шевченко ©   (2009-02-27 13:00) [69]

Желающим поспорить советую почитать отличия версионных СУБД от блокирующих - два совершенно разных подхода к реализации механизма транзакций.

В Interbase, например, оператор SELECT начинает "транзакцию в терминах Interbase", другое дело, что под транзакцией там понимается номер версии записи, не выше которого работает оператор (или группа операторов), в Oracle механизм другой, в блокировочных (в каких-то версиях MS SQL-Server), тоже другой механизм, там читающие операторы могут заблокировать пищушие, чего нету в версионных СУБД.

Я к чему все это - к тому что нет однозначного механизма реализации транзакций и изолированности их друг от друга, и нельзя подход, применимый к одной СУБД использовать применительно к другой, можно наткнуться на аберрации поведения.

Том Кайт об этом очень популярно излагает в своих книгах про Oracle.


 
Johnmen ©   (2009-02-27 13:27) [70]


> Игорь Шевченко ©

Это ты Кайта начитался. Типа http://baks.gaz.ru/oradoc/ora/ora373.htm вопрос №3.
А кто такой Кайт, что спорит с разработчиками? Ну показал его пример, что якобы нет тр-ии. Я же скажу, что была, но закончилась. И что?


 
Sergey13 ©   (2009-02-27 13:27) [71]

Я давно предполагал, что обилие всевозможных транзакций в ИБ&Ко вносит сумятицу в умы. 8-)

> [66] MsGuns ©   (27.02.09 12:43)
Я всегда с ИБ работал с одной пишущей транзакцией. Вернее с двумя. Одна работала на все и всегда, а вторая работала очень редко для скриптов. Просто мне так удобнее было после Оракла, где она всего одна.
И ни разу имел жалоб от клиентов на какие-то там конфликты, блокировки, замирания и т.д.
Конечно программы были не ахти какие - магазиноскладики на 3-5 пользователей максимум (обычно 2-3, но долбят клаву достаточно активно), но тем не менее все работает уже лет по 10. В основном навещаю их только при смене форм платежных документов. 8-)


 
Johnmen ©   (2009-02-27 13:28) [72]

...да-да, я не учел, что Кайт крут и книги пишет, а я нет...:)))


 
Игорь Шевченко ©   (2009-02-27 14:17) [73]


> Ну показал его пример, что якобы нет тр-ии. Я же скажу,
> что была, но закончилась. И что?


"Вынужден констатировать факт моей неоспоримой правоты в данной дискуссии, дальшейшее обсуждение считаю нецелесообразным"


 
Johnmen ©   (2009-02-27 14:20) [74]


> Игорь Шевченко ©   (27.02.09 14:17) [73]

А где копирайт?


 
Petr V. Abramov ©   (2009-02-27 14:28) [75]


> Johnmen ©   (27.02.09 13:28) [72]

сделай select и посмотри, появилось что-нить новое в v$transaction или нет.
насчет Кайта: по поводу крутости ничего сказать не могу, но в дезинформации вроде как замечен он не был


 
Johnmen ©   (2009-02-27 14:32) [76]


> Petr V. Abramov ©   (27.02.09 14:28) [75]
> сделай select и посмотри,
> появилось что-нить новое в v$transaction или нет.

И о чём будет говорить появление или нет?


 
Petr V. Abramov ©   (2009-02-27 14:34) [77]


> Johnmen ©   (27.02.09 14:32) [76]

стартует select транзакцию или нет.
а вообще rtfm, конечно.
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2170.htm


 
Petr V. Abramov ©   (2009-02-27 14:42) [78]


> Johnmen ©   (27.02.09 14:32) [76]

http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/transact.htm#sthref602

ранее прочтения всей книжки до полного просветления не спорь с Игорем :)
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/toc.htm


 
Johnmen ©   (2009-02-27 15:03) [79]


> Petr V. Abramov ©

Да-да, читай. Начиная с Интродакшн. Впрочем я уже упоминал об этом...

>  не спорь с Игорем :)

Очень надо...
"Занёс в дневник личных встреч" (с) оттудава же [73]


 
Petr V. Abramov ©   (2009-02-27 15:13) [80]


> Johnmen ©   (27.02.09 15:03) [79]


> Да-да, читай. Начиная с Интродакшн. Впрочем я уже упоминал
> об этом...

зря так к Интродакшн относишься. Там тоже много интересных вещей написано.
извини, если резко получилось, уж больно ты упирался по поводу вещей, описанных в Concepts доступным англицким языком.


 
Johnmen ©   (2009-02-27 15:22) [81]


> Petr V. Abramov ©   (27.02.09 15:13) [80]

Про Интродакшн я говорил без всякой иронии. См.[70]

А-а... В ...у


 
Petr V. Abramov ©   (2009-02-27 15:24) [82]


> MsGuns ©   (27.02.09 12:43) [66]

ты забыл уточнить СУБД, которая ведет себя подобным образом


 
MsGuns ©   (2009-02-27 15:31) [83]

>Игорь Шевченко ©   (27.02.09 13:00) [69]
>Желающим поспорить советую почитать отличия версионных СУБД от блокирующих - два >совершенно разных подхода к реализации механизма транзакций.

Да читали, читали..
Но не надо смешивать в кучу ПРИНЦИП работы транзакций с реализацией управления ими.
Если в уракле как бы нет понятия ЧИТАЮЩЕЙ транзакции для клиента, то это не значит, что ее нет для сервера вообще. Ну ведь ты не будешь же утвержать, что в процессе исполнения одного читающего запроса сервер "подрабатывает" тем, что выполняет еще и другие, "посторонние" ? А если не будешь, то вот тебе и ответ - пока чтение не выполнится ПОЛНОСТЬЮ, сервер нифига больше делать с этой БД (точнее с таблицами откуда читает) ГАРАНТИРОВАННО НЕ БУДЕТ. А по сути это и есть транзакция.

>Sergey13 ©   (27.02.09 13:27) [71]
>И ни разу имел жалоб от клиентов на какие-то там конфликты, блокировки, замирания и т.д.
>Конечно программы были не ахти какие - магазиноскладики на 3-5 пользователей максимум
(обычно 2-3, но долбят клаву достаточно активно), но тем не менее все работает уже лет по 10. В основном навещаю их только при смене форм платежных документов. 8-)

Сильный аргУмент :)
У меня есть системы на парадксе, работающее 15 лет и тоже "нет жалоб".
И каким боком это относится к транзакциям ?

>Игорь Шевченко ©   (27.02.09 14:17) [73]
>"Вынужден констатировать факт моей неоспоримой правоты в данной дискуссии, дальшейшее >обсуждение считаю нецелесообразным"

О как !
Ну что ж, когда слова заканчиваются, в ход идет плетка. Вполне в духе..


 
Petr V. Abramov ©   (2009-02-27 15:35) [84]


> Johnmen ©   (27.02.09 15:22) [81]

A transaction begins with the first executable SQL statement.
ну вообще конечно авторы доки забыли уточнить, что такое executable :)
проосто не обращал на это внимания


 
Petr V. Abramov ©   (2009-02-27 15:37) [85]


> А если не будешь, то вот тебе и ответ - пока чтение не выполнится
> ПОЛНОСТЬЮ, сервер нифига больше делать с этой БД (точнее
> с таблицами откуда читает) ГАРАНТИРОВАННО НЕ БУДЕТ.

ты забыл уточнить СУБД, которая ведет себя подобным образом
:)


 
Sergey13 ©   (2009-02-27 15:53) [86]

> [83] MsGuns ©   (27.02.09 15:31)
> Если в уракле как бы нет понятия ЧИТАЮЩЕЙ транзакции для клиента
Там просто нет понятия множественности транзакций (если не учитывать автономные). Сильно упрощая: одна сессия = одна транзакция (транзакция в понятиях ИБ).

> Сильный аргУмент :)
Критерием истины является практика. 8-)))))))))
Я догадываюсь, что это не аргумент. Просто я к тому, что судя по твоему описанию работы мои программы вообще не дожны были работать ни разу. 8-)


 
MsGuns ©   (2009-02-27 15:54) [87]

>Petr V. Abramov ©   (27.02.09 15:37) [85]
>ты забыл уточнить СУБД, которая ведет себя подобным образом

Опять-таки если отбросить особенности реализации, то пофиг какая - результат будет одинаков.


 
Petr V. Abramov ©   (2009-02-27 15:56) [88]


> MsGuns ©   (27.02.09 15:54) [87]

жалко что ты далеко, а то б на поляну поспорили :)


 
Игорь Шевченко ©   (2009-02-27 16:00) [89]


> ну вообще конечно авторы доки забыли уточнить, что такое
> executable :)


И в иллюстрации update приводят...


 
Petr V. Abramov ©   (2009-02-27 16:23) [90]

с документацией вообще все веселее :)))
определение executable таки есть
An executable SQL statement is a SQL statement that generates calls to an instance, including DML and DDL statements.

правда, при select`е транзакция все равно не стартует, о чем говорит v$transaction и dbms_transaction.local_transaction_id
:)


 
KSergey ©   (2009-02-27 17:14) [91]

а ведь я сразу предложил спорящим сторонам выложить свою версию определения "транзакции", и собственно по поводу определеня и договориться.
Так нет же, мене сказали, что это прописная незыблемая и всем доподлинно известная истина.

Вот и продолжайте свой терминологический спор по сути. Уже давно видно, что каждый под транзакцией понимает своё. Равно как и под репой.

Но нет, каждый же все знает совершенно точно и без сомнений...

PS
За что только з/п получают посетители этого сайта? Диву даюсь. Или столько "времени досуга"?!


 
Игорь Шевченко ©   (2009-02-27 17:20) [92]

KSergey ©   (27.02.09 17:14) [91]

Э...у транзакции есть довольно однозначное определение (оно даже дано в [54])

А тут собственно и с картинками написано

http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D1%8F


 
KSergey ©   (2009-02-27 17:25) [93]

> Игорь Шевченко ©   (27.02.09 17:20) [92]
> А тут собственно и с картинками написано

Классно, спасибо. Прочитал.
Теперь мне не стыдно перед "остряками", корых послал по поводу репы. Пусть продолжают движение в том же направлении.

PS
Осталось только теперь, чтобы все с этим определением согласились :), а то тут про SELECT многие разговаривают, я их послушаю дальше под попкорн.


 
clickmaker ©   (2009-02-27 18:32) [94]

> А тут собственно и с картинками написано

не нашел картинок. Только мячик в углу -)


 
MsGuns ©   (2009-02-28 19:51) [95]

>Игорь Шевченко ©   (27.02.09 17:20) [92]
>Э...у транзакции есть довольно однозначное определение (оно даже дано в >[54])

Эта.. фигня там написана, а не определение
Хотя, конечно, кому-то и псалтырь - устав


 
Johnmen ©   (2009-02-28 19:58) [96]


> MsGuns ©   (28.02.09 19:51) [95]
> Хотя, конечно, кому-то и псалтырь - устав

А кому-то и Ветхий завет.
А кому-то и теорема Пифагора.
А кому-то и реинкарнация.
А кому-то и постоянная Планка.

ЗЫ
Ну ты понял. Надеюсь...


 
Игорь Шевченко ©   (2009-02-28 20:00) [97]

MsGuns ©   (28.02.09 19:51) [95]


> Эта.. фигня там написана, а не определение


Да бога ради. Твое мнение и твои определения меня волнуют меньше всего, поверь.


 
MsGuns ©   (2009-02-28 20:05) [98]

Если угодно, вот мое определение транзакции:

Транзакция - это разовое задание, которое сервер гарантированно обязуется выполнить полностью или не выполнить ни в какой части в соответствии с указанными в задании инструкциями, а также с учетом правил, определенных для объектов БД, участвующих в обработке


 
Johnmen ©   (2009-02-28 20:09) [99]


> MsGuns ©   (28.02.09 20:05) [98]

Серега, зачем так бурно. Кому надо - посмотрят, кому не надо - пошли в переход, подземный...
А тоё личное определение, как правильно заметил Игорь Ш., нахрен никому не надо, ну кроме тебя....


 
MsGuns ©   (2009-02-28 20:14) [100]

>Johnmen ©   (28.02.09 20:09) [99]
>Серега, зачем так бурно. Кому надо - посмотрят, кому не надо - пошли в >переход, подземный...
>А тоё личное определение, как правильно заметил Игорь Ш., нахрен никому >не надо, ну кроме тебя....

ИШ, конечно, Бог, гуру и т.д., но в данном случае могу сказать, что его определение никому кроме него не нужно. Тем более, что оно, мягко говоря, не точное.


 
Johnmen ©   (2009-02-28 20:43) [101]

Удалено модератором


 
MsGuns ©   (2009-02-28 20:47) [102]

Удалено модератором


 
Johnmen ©   (2009-02-28 20:49) [103]

Удалено модератором


 
Johnmen ©   (2009-02-28 21:01) [104]

Удалено модератором


 
MsGuns ©   (2009-02-28 21:03) [105]

Удалено модератором


 
Johnmen ©   (2009-02-28 21:05) [106]

Удалено модератором


 
Johnmen ©   (2009-02-28 21:12) [107]

Удалено модератором


 
Johnmen ©   (2009-02-28 21:30) [108]

Удалено модератором


 
Johnmen2   (2009-02-28 22:08) [109]

Удалено модератором
Примечание: Нарушение режима RO, продлен до 3 дней


 
имя   (2009-02-28 22:12) [110]

Удалено модератором


 
имя   (2009-02-28 22:20) [111]

Удалено модератором


 
Johnmen7   (2009-02-28 22:28) [112]

Удалено модератором


 
имя   (2009-02-28 22:35) [113]

Удалено модератором


 
Johnmen99   (2009-02-28 22:42) [114]

Удалено модератором


 
Kostafey ©   (2009-02-28 22:42) [115]

Ну вы блин даете (с)

Господа, давайте жить дружно! (с)

:)


 
имя   (2009-02-28 22:43) [116]

Удалено модератором


 
имя   (2009-02-28 22:51) [117]

Удалено модератором


 
имя   (2009-02-28 23:02) [118]

Удалено модератором


 
Ляпа   (2009-02-28 23:10) [119]

Вот и поговорили....


 
имя   (2009-02-28 23:11) [120]

Удалено модератором


 
имя   (2009-02-28 23:15) [121]

Удалено модератором


 
имя   (2009-02-28 23:20) [122]

Удалено модератором


 
Kostafey ©   (2009-02-28 23:21) [123]

...просто как вариант решения "проблемы"

Сделать для этой дискуссии отдельную ветку
и позволить всем кто желает высказаться там.
И не удалять. Ни посты, ни саму ветку
до тех пор пока все спорящеи не успокоятся.


 
Ляпа   (2009-02-28 23:22) [124]

Это весна...


 
имя   (2009-02-28 23:28) [125]

Удалено модератором



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.86 MB
Время: 0.007 c
2-1237898311
Андрей (начинающий)
2009-03-24 15:38
2009.05.03
Отображение ListView с большим количеством строк


2-1237842664
alexander-rsh
2009-03-24 00:11
2009.05.03
Удаление папки


2-1237472358
Alex_C
2009-03-19 17:19
2009.05.03
Размер страницы принтера....


3-1220428975
GanibalLector
2008-09-03 12:02
2009.05.03
FireBird стартует "с опозданием"


2-1237732684
madmech
2009-03-22 17:38
2009.05.03
Как запретить добавлять записи в DBGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский