Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / системные TC / 25 сообщений из 35, страница 1 из 2
25.10.2016, 23:51
    #39333995
Swv
Swv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системные TC
Здравствуйте.

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

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

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

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

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

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

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

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

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

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

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

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

WildSery,

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

про "до последнего фетча" не забудьте, однако.
...
Рейтинг: 0 / 0
26.10.2016, 15:00
    #39334463
Swv
Swv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системные TC
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
26.10.2016, 15:48
    #39334546
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системные TC
pastor, почему именно "до последнего фетча"?
...
Рейтинг: 0 / 0
26.10.2016, 15:53
    #39334553
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
системные TC
Swvтогда не увижу в temp_tbl в последнем триггере записи. только если временная ON COMMIT PRESERVE ROWS и записи с тегом транзакции.Разве есть иной выбор?

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


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