|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Не получается. Приходится дробить на две транзакции. В первой удаляем зависимый триггер, во второй переименовываем поле и создаём триггер заново. На переименовании случилась ошибка и таблица оказалась без триггера. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 11:10 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Hommer, и не только при "наличии зависимого триггера" зы. лучше было-бы закоментарить тело триггера, а не удалять его ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 12:29 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Неудобно что есть такое неинтуитивное поведение. При комментировании тоже нужно на две транзакции разбивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 14:01 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
HommerНеудобно что есть такое неинтуитивное поведение. Это реальность, данная нам в ощущениях. Либо смирись, либо... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 14:05 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovHommerНеудобно что есть такое неинтуитивное поведение. Это реальность, данная нам в ощущениях. Либо смирись, либо... Можно создать триггер использующий поле и сразу это поле переименовать, ошибки не будет. Ошибка возникнет только при коммите. А в моём случае ошибка происходит на переименовании, хотя коммит наверняка прошёл бы верно, ведь зависимостей уже не будет. Очень похоже что там просто ошибка в обработке таких случаев. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 14:18 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
HommerОчень похоже что там просто ошибка в обработке таких случаев. Нет там ошибки. Просто кое-кто не доделал отложенную валидацию объектов БД, ограничившись полем в системных таблицах "чтобы было как у Оракула". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 14:23 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovHommerОчень похоже что там просто ошибка в обработке таких случаев. Нет там ошибки. Просто кое-кто не доделал отложенную валидацию объектов БД, ограничившись полем в системных таблицах "чтобы было как у Оракула". В одной транзакции удаляем все внешние ключи ссылающиеся на таблицу и потом саму таблицу. Работает. В одной транзакции удаляем все внешние ключи по полю и потом переименоваваем поле. Работает. В одной транзакции удаляем все триггеры использующие поле и потом удаляем само поле. Работает. В одной транзакции удаляем все триггеры использующие поле и потом переименовываем поле. Не работает. Я вижу что в других случаях валидация идёт по мере выполнения. А при переименовании, с предшествующим ему дропом триггера, что-то идёт не как обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 17:11 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Hommer, переименование столбца - это одно из изменений формата данных. Которое требует коммита. После чего только можно обращаться к измененным метаданным. То есть, коммита требует именно изменение структуры таблицы. Триггеры и ФК к структуре таблицы (и формату записи) отношения не имеют. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 20:42 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
kdvHommer, переименование столбца - это одно из изменений формата данных. Которое требует коммита. После чего только можно обращаться к измененным метаданным. То есть, коммита требует именно изменение структуры таблицы. Триггеры и ФК к структуре таблицы (и формату записи) отношения не имеют. Если столбец не переименовывать, а удалить, то ошибки нет. Это баг по всем признакам. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 21:07 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
HommerВ одной транзакции удаляем все триггеры использующие поле и потом переименовываем поле. Не работает.в рамках одной транзакции можно: * дропнуть триггер, использующий старое поле; * добавить новое поле (оно окажется в "хвосте" структуры таблицы); * удалить старое поле; * вызвать alter field position <N>, где N = тому положению среди остальных полей, куда надо поместить добавленное только что поле; * создать триггер с новым кодом, в котором будт обращение к новому полю. Достаточно просто юзать set autoddl off. Код: sql 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. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87.
Output: Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 23:41 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Ованес СусанянHommerВ одной транзакции удаляем все триггеры использующие поле и потом переименовываем поле. Не работает.в рамках одной транзакции можно: * дропнуть триггер, использующий старое поле; * добавить новое поле (оно окажется в "хвосте" структуры таблицы); * удалить старое поле; * вызвать alter field position <N>, где N = тому положению среди остальных полей, куда надо поместить добавленное только что поле; * создать триггер с новым кодом, в котором будт обращение к новому полю. Достаточно просто юзать set autoddl off. Код: sql 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. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87.
Output: Код: sql 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.
После переименования данные должны сохраниться. У вас они теряются. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 12:47 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Hommer... После переименования данные должны сохраниться. У вас они теряются. У нас сохраняются. Теряются - у вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 18:43 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2018, 18:44 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Почти семь лет назад: http://tracker.firebirdsql.org/browse/CORE-3458 Нужели никто больше не натыкался на невозможность переименования поля с предварительным дропом зависимых триггеров и их последующим созданием одной транзакцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 09:59 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
У всех, очевидно, получается называть поле правильно с первой попытки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 14:48 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, не обязательно. Просто используют автокоммит для DDL ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 14:55 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Симонов ДенисDimitry Sibiryakov, не обязательно. Просто используют автокоммит для DDL Или используют коммит после каждого изменения метаданных, которое может повлиять на другие стейтменты в этой транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 15:58 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
_HommerПочти семь лет назад: http://tracker.firebirdsql.org/browse/CORE-3458 Нужели никто больше не натыкался на невозможность переименования поля с предварительным дропом зависимых триггеров и их последующим созданием одной транзакцией? Эта возможность никому не нужна. Изменения метаданных должны быть редкими выполняться монопольно. В идеале, конечно, но лучше к этому стремиться, чем пытаться сделать плохое решение, превозмогая трудности. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 16:01 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
YuRockредкими выполняться монопольно редкими выполняться и монопольно ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 16:01 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
Та елки палки, и исправил неправильно - и в другом месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 16:02 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
YuRock_HommerПочти семь лет назад: http://tracker.firebirdsql.org/browse/CORE-3458 Нужели никто больше не натыкался на невозможность переименования поля с предварительным дропом зависимых триггеров и их последующим созданием одной транзакцией? Эта возможность никому не нужна. Изменения метаданных должны быть редкими выполняться монопольно. В идеале, конечно, но лучше к этому стремиться, чем пытаться сделать плохое решение, превозмогая трудности. В Firebird любая логически правильная последовательность ddl-запросов отрабатывает без промежуточных коммитов и при ошибке откатывается целиком. Если это вдруг не так, то это ошибка в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 22:36 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
HommerВ Firebird любая логически правильная последовательность ddl-запросов отрабатывает без промежуточных коммитов и при ошибке откатывается целиком. Если это вдруг не так, то это ошибка в коде. скорее недоработка. Ибо слово любая является преувеличением, всегда бывают какие-либо ограничения. Именно этот конкретный случай вроде можно доработать, патч я сейчас тестирую. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2018, 09:13 |
|
Переименование поля при наличии зависимого триггера (в одной транзакции).
|
|||
---|---|---|---|
#18+
dimitrHommerВ Firebird любая логически правильная последовательность ddl-запросов отрабатывает без промежуточных коммитов и при ошибке откатывается целиком. Если это вдруг не так, то это ошибка в коде. Ибо слово любая является преувеличением, всегда бывают какие-либо ограничения. Эти оператры все можно? Код: sql 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. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2018, 11:47 |
|
|
start [/forum/topic.php?fid=40&msg=39606958&tid=1561216]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 158ms |
0 / 0 |