|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Только начал осваивать DDL, поэтому не бейте больно. Вопрос - в следующем: Создаю хранимую процедуру, запускаю - работает. Переподключаюсь к базе данных - процедура пропадает. Делаю DROP TABLE - таблица пропадает. Переподключаюсь - вижу, что таблица осталась в базе. 1. Как удалить таблицу навсегда? 2. Можно ли сохранить навсегда хранимую процедуру? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 11:49 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Oleg77777, транзакцию надо подтверждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 11:53 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Hello, Симонов Денис! You wrote on 26 января 2016 г. 12:00:21: Симонов Денис> транзакцию надо подтверждать.обычно инструменты это делают сами. в том числе и isql при соответствующем режиме. поэтому хотелось бы узнать, чем именно пользуется ТС? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 12:03 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Мимопроходящий, мой ХШ подсказывает что IBE. Но только делает это не в редакторе скриптов (в котором по умолчанию AUTODLL ON), а в окошке для выполнения SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 12:10 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Мимопроходящий, Работаю с Embarcadero® C++Builder® XE, подключаюсь к firebird'овскому файлу. Делаю так: авторpFIBQuery2->SQL->Text = "DROP TABLE AAA"; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 12:12 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Oleg77777, да ХШ подвёл, но лишь от части. Бегом читать про транзакции P.S. Что то мне кажется странным что ТСу потребовался DDL в приложении. Опять изменение метаданных "налету"? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 12:16 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Oleg77777, как тут уже сказали, транзакции надо явно завершать. У FIBPlus.pFIBTransaction по умолчанию DefaultAction (и TimeOutAction) стоит taRollback. То есть, когда закрывают БД, без явного commit/rollback активных в этот момент транзакций, транзакциям делается rollback. (в компонентах IBX не так, там по умолчанию taCommit). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 12:33 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
kdv, Спасибо, все понял. А то я тут пытался SQL-ем пулять, типа pFIBQuery2->SQL->Text = "SET TRANSACTION"; , а оно ругаецца, типа "Not permitted". Кстати, интересно, почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:06 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Oleg77777, потому что управление транзакциями в ИБ и ФБ производится с клиента. А set transaction - это хитрая команда. она либо препарсится gpre, и превращается в вызов ФБ API, либо выполняется в isql, и является такой же специфической, как и set term. Ты тут видишь set transaction? Ага... http://www.ibase.ru/firebird/doc/langref25rus.html единственное управление транзакциями на сервере - это savepoints и автономные транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:24 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Oleg77777, www. youtube.com/watch?v=9Th_14X6Ckg у меня на канале есть еще другие видео по транзакциям. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:26 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
kdv, оно там есть. Просто в оглавлении не видно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:27 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
kdv, еще спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:40 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Oleg77777, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:45 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Симонов Денисоно там есть. Просто в оглавлении не видно да, склероз. Просто обычный старт - это вызовы функций isc_start_transaction или isc_start_multiple, которые возвращают хэндл транзакции, с которым дальше можно работать. А выполняя SET TRANSACTION как "DSQL" мы не можем с сервера получить хэндл этой транзакции. Якобы, надо тогда использовать isc_dsql_execute_immediate. Но вернет-ли он isc_tr_handle*, я не знаю. Короче, гемор. В ESQL, SET TRANSACTION должен превращаться в соотв вызовы isc_start_transaction или isc_start_multiple. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:47 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
DBConstructor, Код: plaintext 1.
не надо так. вообще это херня какая-то. Допустим, так можно у фиплюса, но какой уровень изолированности у этой транзакции получается? Короче, брак в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:49 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
kdv, Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:50 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
DBConstructor, да пофиг. не надо так писать (по крайней мере, использовать прекрасные имена write_mode_transaction, которые почти ни о чем не говорят). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:54 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
DBConstructor, а зачем ты для запроса Код: plaintext 1. 2. 3. 4. 5.
write транзакцию запускаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:55 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
DBConstructor Код: plaintext 1. 2.
Сам понял, что написал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:56 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
hvlad, вроде, уже не первый раз (хотя может у меня склероз). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:58 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
hvlad, артефакт копипасты. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 13:59 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
kdv, у тебя нет склероза. Как-то уже копипастил похожим образом - менял read_committed на concurrency, а rec_version/no_rec_version забывал удалять. Понятно, что указание no_rec_version не имеет смысла при уровне изолированности snapshot, но и ошибкой, влияющей на работу программы, это не назовешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 14:09 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
гм... а разве в 2.5 не делали чтобы сервер ругался на несовместимые параметры транзакции? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 14:19 |
|
Как сохранить результат выполнения оператора DDL
|
|||
---|---|---|---|
#18+
Симонов Денис, а какая разница? Считаю, что во многих случаях, наличие двух транзакций (одна на чтение, другая на запись), да еще и с разными уровнями изолированности - это devil evil. Особенно, если в рамках одной транзакции приходится не только изменять, но и читать измененные записи. В таком варианте, транзакция на чтение - сущность без надобности. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 14:21 |
|
|
start [/forum/topic.php?fid=40&msg=39155572&tid=1562376]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 260ms |
total: | 414ms |
0 / 0 |