powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / системные TC
25 сообщений из 35, страница 1 из 2
системные TC
    #39333995
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

есть необходимость использования системных ТС. Тут у меня похоже небольшой пробел )

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

http://www.ibase.ru/savepoints/ читал

есть ли возможность в данном случае прочитать что находится во временной?

Спасибо
...
Рейтинг: 0 / 0
системные TC
    #39334018
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SwvВот только после этого если временную прочитать в этой же транзакции, то там ничего нет.
Подозреваю, что исключение отменило все вставки.Таки и шо вас, собсно, не устраивает? Необработанное в WHEN исключение откатывает транзакцию и, соответственно, отменяет всё, что транзакция сделала "полезного". Если не устраивает такое поведение, пинайте автономные транзакции и временные таблицы с ON COMMIT PRESERVE ROWS.
...
Рейтинг: 0 / 0
системные TC
    #39334187
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Rdb Dev!
You wrote on 26 октября 2016 г. 10:59:49:

Rdb Dev> Необработанное в WHEN исключение откатывает транзакцию и, соответственно, отменяет всё, что транзакция сделала "полезного".купи себе букварь.
прежде чем других "учить".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
системные TC
    #39334223
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devисключение откатывает транзакцию
Тут тебе не PG или MS какой...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
системные TC
    #39334351
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийкупи себе букварь.
прежде чем других "учить".Может тебе самому последовать своему совету, чтобы, наконец, прочесть то, что написано на стр.273 документа "Firebird Language Reference" ?

"Исключение может быть обработано в операторе WHEN ... DO. Если пользовательское
исключение не было обработано в триггере или в хранимой процедуре, то все
выполненные действия отменяются
, вызвавшая программа получает текст, заданный
при создании исключения или альтернативный текст сообщения."
...
Рейтинг: 0 / 0
системные TC
    #39334354
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сейчас ещё и Денис получит пропистон за процитированную ХРЕНЬ

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
системные TC
    #39334356
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devто, что написано
В каком месте написанного ты увидел слово "транзакция", чудик?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
системные TC
    #39334358
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

только там говорится о действиях, а не о транзакции. Транзакция вообще-то вовсе не обязательно состоит из одного запроса.
...
Рейтинг: 0 / 0
системные TC
    #39334360
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не Библия, состоит не из постулатов.
Отрывок забавный! "Все выполненные действия" - чем выполненные? Процедурой/триггером, в котором случилось исключение? Всеми в рамках текущей транзакции или сэйвпоинта? Офисной уборщицей за всю предыдущую неделю?
...
Рейтинг: 0 / 0
системные TC
    #39334364
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, ну выразился не совсем корректно... Что уж прям так придираться? Транзакция не завершается, но все её действия откатываются, так же, как при rollback. Я прав? Разница лишь в том, что можно еще раз попытаться выполнить какие-либо действия в том же контексте транзакции. Но разве это вернет записи во временную таблицу, которые были вставлены в транзакции до EXCEPTION?
...
Рейтинг: 0 / 0
системные TC
    #39334370
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Rdb Dev!
You wrote on 26 октября 2016 г. 13:41:30:

Rdb Dev> Я прав?нет.
и хуже всего то, что весьма пафосный.

Модератор: censored
...
Рейтинг: 0 / 0
системные TC
    #39334375
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

нет не прав. Клиент решает, что делать откатить транзакцию или откатится на последний сейвпойнт и продолжить действия в транзакции.

WildSery,

это не совсем корректный перевод Release Notes или LRU. Надо бы посмотреть что там в оригинале написано.
...
Рейтинг: 0 / 0
системные TC
    #39334379
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Утро вечера мудреней )

Не получится так. ибо по документации получается,что откатывается либо все до начала транзакции. Либо в блоке begin when end.

ON COMMIT PRESERVE ROWS судя по описанию тоже будет отменена в случае ошибки
...
Рейтинг: 0 / 0
системные TC
    #39334381
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swv,

ещё один. Ладно я подумаю как это предложение переписать так чтобы у кого-то мозги не затуманивались.
...
Рейтинг: 0 / 0
системные TC
    #39334396
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devМимопроходящийкупи себе букварь.
прежде чем других "учить".Может тебе самому последовать своему совету, чтобы, наконец, прочесть то, что написано на стр.273 документа "Firebird Language Reference" ?

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

Здесь речь о действиях выполненных внутри хранимой процедуры или триггера.

Поэтому правильно читать как-то так

"Исключение может быть обработано в операторе WHEN ... DO. Если пользовательское
исключение не было обработано в триггере или в хранимой процедуре, то все действия,
выполненные внутри этой хранимой процедуры (триггера) отменяются, а вызвавшая программа
получает текст, заданный при создании исключения или альтернативный текст сообщения."


Если есть варианты получше предлагайте.
...
Рейтинг: 0 / 0
системные TC
    #39334401
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис, слово "ВСЕ", с учётом сейвпоинтов (явных и неявных) тут наверное излишне.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
системные TC
    #39334404
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_devпропущено...
Может тебе самому последовать своему совету, чтобы, наконец, прочесть то, что написано на стр.273 документа "Firebird Language Reference" ?

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

Здесь речь о действиях выполненных внутри хранимой процедуры или триггера.

Поэтому правильно читать как-то так

"Исключение может быть обработано в операторе WHEN ... DO. Если пользовательское
исключение не было обработано в триггере или в хранимой процедуре, то все действия,
выполненные внутри этой хранимой процедуры (триггера) отменяются, а вызвавшая программа
получает текст, заданный при создании исключения или альтернативный текст сообщения."


Если есть варианты получше предлагайте.

тут речь идет (если дословно) о абстрактной ХП.

есть необходимость добавить в таблицу (временную) допустим в третьем BI триггере. И возбудить исключение 11 BI триггере. уведомить об этом приложение и чтобы добавленные данные в третьем BI остались во временной
...
Рейтинг: 0 / 0
системные TC
    #39334419
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис "Исключение может быть обработано в операторе WHEN ... DO. Если пользовательское
исключение не было обработано в триггере или в хранимой процедуре, то все действия,
выполненные внутри этой хранимой процедуры (триггера) отменяются, а вызвавшая программа
получает текст, заданный при создании исключения или альтернативный текст сообщения."
Забавно получается...
Если исключение возбуждено в триггере, то откатятся изменения, сделанные в триггере и, если триггер был вызван по действиям, произведенным в хранимой процедуре, то исключение должно быть поднято до этой ХП. Если ХП также не обработает это исключение в WHEN...DO, то также должны быть отменены все изменения, сделанные в этой ХП? А если так, то должны быть отменены и все изменения, сделанные посредством выполнения последнего полученного пользовательского запроса в контексте данной транзакции?
Иными словами, будут отменены все изменения последнего выданного в транзакции запроса?
...
Рейтинг: 0 / 0
системные TC
    #39334431
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swvесть необходимость добавить в таблицу (временную) допустим в третьем BI триггере. И возбудить исключение 11 BI триггере. уведомить об этом приложение и чтобы добавленные данные в третьем BI остались во временнойПопробуйте вставлять данные во временную таблицу ON COMMIT PRESERVE ROWS с помощью конструкции:
IN AUTONOMOUS TRANSACTION DO INSERT INTO temp_tbl VALUES(....)
...
Рейтинг: 0 / 0
системные TC
    #39334432
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

про "до последнего фетча" не забудьте, однако.
...
Рейтинг: 0 / 0
системные TC
    #39334463
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devSwvесть необходимость добавить в таблицу (временную) допустим в третьем BI триггере. И возбудить исключение 11 BI триггере. уведомить об этом приложение и чтобы добавленные данные в третьем BI остались во временнойПопробуйте вставлять данные во временную таблицу ON COMMIT PRESERVE ROWS с помощью конструкции:
IN AUTONOMOUS TRANSACTION DO INSERT INTO temp_tbl VALUES(....)

тогда не увижу в temp_tbl в последнем триггере записи. только если временная ON COMMIT PRESERVE ROWS и записи с тегом транзакции. получается записи будут висеть во временной до завершения коннекта.
Сильно это будет напрягать сервер? или же в рамках коннекта временная работает так же как и обычная?
...
Рейтинг: 0 / 0
системные TC
    #39334546
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor, почему именно "до последнего фетча"?
...
Рейтинг: 0 / 0
системные TC
    #39334553
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swvтогда не увижу в temp_tbl в последнем триггере записи. только если временная ON COMMIT PRESERVE ROWS и записи с тегом транзакции.Разве есть иной выбор?

Swvполучается записи будут висеть во временной до завершения коннекта.Ну, поставьте на них гриф "С.С., после прочтения сжечь!" и пусть фетч из этой таблицы их подчистит обычным DELETE FROM.
...
Рейтинг: 0 / 0
системные TC
    #39334559
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devРазве есть иной выбор?
Выбор есть всегда. Наиболее очевидный в данном случае: перестать бредить и начать изучать
предмет. Причём как для тебя, так и для ТСа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
системные TC
    #39334581
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, твоё замечание было бы ценнее, приведи ты вариант решения задачи ТСа.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / системные TC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]