|
|
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
kdv То есть, вот этот какой то бредовый наезд, что из триггера на таблицу эту же таблицу ну никак нельзя модифицировать, я считаю порождением факта о мутирующих таблицах в Оракле, и ничем иным. Для Вас, похоже, авторитет Оракла настолько непререкаем, что Вы даже и усомниться в его функционировании не можете. Помню, была совершенно идиотская битва с MS SQL-цами, на тему, зачем нужно вообще в одном коннекте стартовать несколько транзакций одновременно, и боже сохрани, иметь в одной транзакции несколько открытых курсоров с возможностью поочередного фетча. Это просто не укладывалось в их мозгу, потому что этого НЕТ в MS SQL, а значит и НЕ ДОЛЖНО быть ни в какой другой СУБД. Вы аналогичные мысли пытаетесь проталкивать? С таким же успехом можно было сказать, что текущую функциональность Firebird благословил Господь, и все кто усомнились в ее праведности, есть еретики. Но этого же нет. С вами пытаются вести дискуссию разработчики Firebird, которые, уверяю, имеют опыт работы как с Ораклом так и с MS SQL, и внимательно изучают в т.ч. и их тонкости функционирования. Впечатление такое, что Вы находитесь в какой-то иной плоскости, которая сродни религиозному фанатизму. Прошу Вас, разуверьте меня, скажите, что Вам в Oracle нравится не все. Мне вот, в ФБ действительно нравится не все. И это Вы мне объясняете про бред и домыслы ??? Успокойтесь, можно модифицировать таблицы из их же триггера. Способ еще в 7 Oracle придумали, если склероз мне не изменил. Просто при этом надо отчетливо понимать, ччто именно ты делаешь, но это ведь Вас не должно пугать ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2010, 21:58 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Ты сделал 8 постов подряд. Нельзя было ответить в одном? Хочешь чтобы и другие отвечали 1 постом на каждую твою фразу? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2010, 22:06 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
protectorНельзя было ответить в одном? Ну, ты же знаешь, когда понос подпирает... Конечно, радует, что хитрые пользователи к седьмой версии нашли лазейку в клетке, которую для них воздвигли индусы... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2010, 22:30 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Ну, ты же знаешь, когда понос подпирает... Конечно, радует, что хитрые пользователи к седьмой версии нашли лазейку в клетке, которую для них воздвигли индусы... Какой ты всё таки злой. Будь добрее и люди к тебе потянутся. Я кстати не знаю что там за лазейка, хотя работал с оракулом 2 года. Мне и в голову не приходило даже думать о том, чтобы писать в ту-же таблицу в триггере в оракуле. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2010, 22:46 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
protector Gluk (Kazan) Ты сделал 8 постов подряд. Нельзя было ответить в одном? Хочешь чтобы и другие отвечали 1 постом на каждую твою фразу? По делу есть что сказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 08:51 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
И все равно, я лублу Пг. А вы фсе дауны (да простят меня модераторы). Вот вам больше нечем заняться, кроме как кидаться содержимым своих ночных горшков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 08:55 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Dimitry Sibiryakov artemanaпроблемы, вызваные мутацией, неизбежны. Единственная проблема, вызываемая мутацией, это невозможность обратиться к таблицам из триггеров. И никакие order by эту проблему обойти не помогут. Ой, да ну бросьте. Можно к ним обращаться. И писать можно (геморойно правда). Вот намедни заказчик осчастливил. 1. Имеется таблица, все действия с которой, записывают копию строки в таблицу журнал 2. Записи собираются из основной таблицы и журнальной по union all 3. Выясняется, что записи в журнале тоже можно редактировать (такой вот хитрый заказчик) 4. Куда бы вы думали журналируются изменения журнальных записей ??? Правильно, в ту же журнальную таблицу. Что вы, серьезно думаете, что мутация кого-то остановила ???И что Вы там говорили про бомбу замедленного действия у kdv? Или Вы думаете что Ваша никогда не рванет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 08:59 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov protectorНельзя было ответить в одном? Ну, ты же знаешь, когда понос подпирает... Конечно, радует, что хитрые пользователи к седьмой версии нашли лазейку в клетке, которую для них воздвигли индусы... Вы возможно не в курсе дела :) 1. Тригеры в Oracle нынче писать не принято. Помимо озвученных и неозвученных их ограничений, это еще и удар по производительности 2. Голые DML (а для чего еще триггеры ) из приложений тоже вызывать не принято 3. Все что можно сделать триггерами, еще лучше можно сделать грамотно спроектировав API на ХП (как правило в пакетах, но в данном случае не суть) 4. Проблема с мутациями (как и некоторые другие проблемы) в этом случае не возникает 5. Если кому то (мне например) повезло с тяжким Legacy на триггерах, способ обхода таки известен со времен 7 Oracle (желающие могут погуглить на тему обход мутаций в триггере) А теперь хотелось бы таки услышать ответ на мегаволнительный вопрос: Если в FB одна транзакция инсертит-комиттит ровно по 100 записей, а другая считает количество записей при помощи count(*), может ли случиться, что она подсчитает некратное 100 число. Ответ да меня устроит без объяснений, к ответу нет хотелось бы видеть минимальные комментарии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 09:00 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
eBaseGluk (Kazan)Dimitry Sibiryakov artemanaпроблемы, вызваные мутацией, неизбежны. Единственная проблема, вызываемая мутацией, это невозможность обратиться к таблицам из триггеров. И никакие order by эту проблему обойти не помогут. Ой, да ну бросьте. Можно к ним обращаться. И писать можно (геморойно правда). Вот намедни заказчик осчастливил. 1. Имеется таблица, все действия с которой, записывают копию строки в таблицу журнал 2. Записи собираются из основной таблицы и журнальной по union all 3. Выясняется, что записи в журнале тоже можно редактировать (такой вот хитрый заказчик) 4. Куда бы вы думали журналируются изменения журнальных записей ??? Правильно, в ту же журнальную таблицу. Что вы, серьезно думаете, что мутация кого-то остановила ???И что Вы там говорили про бомбу замедленного действия у kdv? Или Вы думаете что Ваша никогда не рванет? С чего-б ей рвать-та? Кто Вам с kdv вообще сказал, что я против записи в таблицу из ее-же триггера??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 09:01 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
protector Dimitry Sibiryakov Ну, ты же знаешь, когда понос подпирает... Конечно, радует, что хитрые пользователи к седьмой версии нашли лазейку в клетке, которую для них воздвигли индусы... Какой ты всё таки злой. Будь добрее и люди к тебе потянутся. Я кстати не знаю что там за лазейка, хотя работал с оракулом 2 года. Мне и в голову не приходило даже думать о том, чтобы писать в ту-же таблицу в триггере в оракуле. Ну шо я могу сказать ... фигово ты знаешь Oracle. Этому финту первым делом студентов учат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 09:02 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)А теперь хотелось бы таки услышать ответ на мегаволнительный вопрос:А чего это он такой мегаволнительный ? У вас проблемы ? Хотите поговорить об этом ? (ц) Gluk (Kazan)Если в FB одна транзакция инсертит-комиттит ровно по 100 записей, а другая считает количество записей при помощи count(*), может ли случиться, что она подсчитает некратное 100 число. Ответ да меня устроит без объяснений, к ответу нет хотелось бы видеть минимальные комментарииRead-committed - да Concurrency (оно-же snapshot, оно-же умолчательное) - нет Волнение снято ? Ну, хотя-бы мега- ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:05 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)1. Тригеры в Oracle нынче писать не принято. Помимо озвученных и неозвученных их ограничений, это еще и удар по производительности 2. Голые DML (а для чего еще триггеры ) из приложений тоже вызывать не принято 3. Все что можно сделать триггерами, еще лучше можно сделать грамотно спроектировав API на ХП (как правило в пакетах, но в данном случае не суть)Мгм... наверное я таки не в курсе... но Почему PL\SQL в случае (1) есть удар по производительности, а в случае (3) - не удар ? PS Я тоже сторонник работы только через процедуры PPS (3) в общем случае неверно, но не хотелось бы устраивать очередной спор ещё и по этому поводу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:09 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvlad PS Я тоже сторонник работы только через процедуры Но триггера тоже типа процедуры. И если нужно, чтобы процедура вызывалась на события в БД, то что делают сторонники процедур? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:36 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
vadiminfohvlad PS Я тоже сторонник работы только через процедуры Но триггера тоже типа процедуры. И если нужно, чтобы процедура вызывалась на события в БД, то что делают сторонники процедур?Задайте тот вопрос, который вы хотели задать. Ибо отвечать сразу на несколько вариантов вашего истинного вопроса мне как-то лень... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:38 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvladGluk (Kazan)1. Тригеры в Oracle нынче писать не принято. Помимо озвученных и неозвученных их ограничений, это еще и удар по производительности 2. Голые DML (а для чего еще триггеры ) из приложений тоже вызывать не принято 3. Все что можно сделать триггерами, еще лучше можно сделать грамотно спроектировав API на ХП (как правило в пакетах, но в данном случае не суть)Мгм... наверное я таки не в курсе... но Почему PL\SQL в случае (1) есть удар по производительности, а в случае (3) - не удар ? PS Я тоже сторонник работы только через процедуры PPS (3) в общем случае неверно, но не хотелось бы устраивать очередной спор ещё и по этому поводу Ну к примеру возьмем журналирование изменений по update-у (пример чисто иллюстративный) 1 вариант (традиционный): Из приложения update-им много строк, каждая из которых активирует триггер, переключая SQL в PL/SQL. В триггере, в свою очередь идет insert, переключая PL/SQL в SQL 2 вариант: Из хранимки дергаем два DML-я. Первым update-им строки, вторым вставляем изменения в лог. Всего имеем два переключения PL/SQL в SQL. Независимо от количества изменяемых строк. Менее умозрительный пример: Выносим нафих все триггеры, генерирующие PK в те места в ХП, в которых собственно выполняем вставку. В случае если insert-ится большое количество записей, получаем нефиговый выхлоп по производительности :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:46 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvlad Concurrency (оно-же snapshot, оно-же умолчательное) - нет Волнение снято ? Ну, хотя-бы мега- ? :) Честно говоря не очень :( Т.е. в случае snapshot мы можем видеть изменения сторонних транзакций не атомарными ??? o O Т.е. в принципе в примере с переводом денег (из букваря) теоретически есть возможность увидеть переводимую сумму сразу на двух счетах или ни на одном ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:48 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)hvlad Concurrency (оно-же snapshot, оно-же умолчательное) - нет Волнение снято ? Ну, хотя-бы мега- ? :) Честно говоря не очень :( Т.е. в случае snapshot мы можем видеть изменения сторонних транзакций не атомарными ??? o O Т.е. в принципе в примере с переводом денег (из букваря) теоретически есть возможность увидеть переводимую сумму сразу на двух счетах или ни на одном ??? Sorry, в Read Committed конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:52 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
vadiminfohvlad PS Я тоже сторонник работы только через процедуры Но триггера тоже типа процедуры. И если нужно, чтобы процедура вызывалась на события в БД, то что делают сторонники процедур? Сторонники процедур не открывают DML напрямую. Некоторые сторонники не открывают даже select (но я к ним не отношусь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:56 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Ну к примеру возьмем журналирование изменений по update-у (пример чисто иллюстративный) 1 вариант (традиционный): Из приложения update-им много строк, каждая из которых активирует триггер, переключая SQL в PL/SQL. В триггере, в свою очередь идет insert, переключая PL/SQL в SQL 2 вариант: Из хранимки дергаем два DML-я. Первым update-им строки, вторым вставляем изменения в лог. Всего имеем два переключения PL/SQL в SQL. Независимо от количества изменяемых строк.Примеры не совсем равноценны. В первом варианте row-level триггеры, во-втором statement-level, так сказать. Если бы в ORACLE были аналоги таблиц inserted\deleted из T-SQL (а может уже есть ?), то первый вариант можно было бы переписать с их использованием, чтобы добиться более полной аналогии со-вторым. Gluk (Kazan)Менее умозрительный пример: Выносим нафих все триггеры, генерирующие PK в те места в ХП, в которых собственно выполняем вставку. В случае если insert-ится большое количество записей, получаем нефиговый выхлоп по производительности :)Спасибо. Для себя я вижу тут два основных вывода: а) переключение PL\SQL <-> SQL имеет место быть и стоит не дёшево, поэтому принято экономить на таких переключениях б) в Firebird эта проблема стоит гораздо менее остро, т.к. нет таких переключений. Есть только обычные затраты на вызов PSQL процедуры\тригера (передача параметров и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 10:59 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvladЗадайте тот вопрос, который вы хотели задать. Ибо отвечать сразу на несколько вариантов вашего истинного вопроса мне как-то лень... Ну судя по этому ответу, я думау, что не зря скетически относился к идеям быть сторонником чего-либо подобного типа процедурам: наверное, от этого должно ломать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 11:14 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Сторонники процедур не открывают DML напрямую. Некоторые сторонники не открывают даже select (но я к ним не отношусь) Не совсем понял. Я думал из контекста предыдущего процедуры противопоставляются триггерам. Но мож я не все прочитал? А как стронники процедур получают доступ к данным, и как их модифицируют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 11:22 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Gluk (Kazan)hvlad Concurrency (оно-же snapshot, оно-же умолчательное) - нет Волнение снято ? Ну, хотя-бы мега- ? :) Честно говоря не очень :( Т.е. в случае snapshot мы можем видеть изменения сторонних транзакций не атомарными ??? o O Т.е. в принципе в примере с переводом денег (из букваря) теоретически есть возможность увидеть переводимую сумму сразу на двух счетах или ни на одном ??? Sorry, в Read Committed конечноА кто же переводит деньги в read-committed ? Это из того-же букваря :) Слово "атомарность" выше было употреблено не по назначению. Правильнее говорить о statement-level consistency. Кстати, в стандарте я этого термина не нашёл. Но, так как он уже неоднократно употреблялся здесь, я надеюсь у нас не будет разночтений в его интерпретации. Так вот, statement-level consistency, насколько я помню, не диктуется стандартом, а оставляется на усмотрение производителя. Я говорю о такой характеристике курсора, как sensitivity , которая, если не указано явно, является ASENSITIVE (секция 4.32 Cursors). Если есть другие ссылки на стандарт - буду рад ознакомиться. Так что формально read-committed в Firebird работает правильно, ибо речь в его определении идёт только о допустимых феноменах. Другой вопрос, что вы привыкли к оракловому пониманию statement-level consistency для RC :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 11:24 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
vadiminfohvladЗадайте тот вопрос, который вы хотели задать. Ибо отвечать сразу на несколько вариантов вашего истинного вопроса мне как-то лень... Ну судя по этому ответу, я думау, что не зря скетически относился к идеям быть сторонником чего-либо подобного типа процедурам: наверное, от этого должно ломать.Если вы не в состоянии понять, о чём идёт посторонний диалог, может не стоит в него встревать ? PS А давайте я сейчас тоже расскажу что с вами должно происходить и в каком случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 11:26 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvladЕсли вы не в состоянии понять, о чём идёт посторонний диалог, может не стоит в него встревать ? Ну а что Вы хотели? - здесь же всех на форум допускают. Я не понимаю что Вы говорите, Вы не понимаете что Вас спрашуют. Это по философски все получается. Впрочем, кое-что то я понял для себя: сторонником только процедур быть хуже, чем сторонником только Оракла. Так что я не зря встрял: инфу нужную получил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 11:38 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
vadiminfohvladЕсли вы не в состоянии понять, о чём идёт посторонний диалог, может не стоит в него встревать ? Ну а что Вы хотели? - здесь же всех на форум допускают. Я не понимаю что Вы говорите, Вы не понимаете что Вас спрашуют. Это по философски все получается. Согласен. Но особенно "по философски" выглядят ценные фразы вроде этой: vadiminfoнаверное, от этого должно ломать. vadiminfoВпрочем, кое-что то я понял для себя: сторонником только процедур быть хуже, чем сторонником только Оракла. Так что я не зря встрял: инфу нужную получил.Вот этого вы не понимаете - вы выискиваете, чем бы померяться, а суть не в этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 11:46 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36781450&tid=1552773]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 183ms |

| 0 / 0 |
