|
|
|
Получить DEFAULT VALUE в триггере - напомните, есть ли простое решение?
|
|||
|---|---|---|---|
|
#18+
Имеется таблица и обслуживающее её приложение. В структуру таблицы добавлено поле. Чтобы обеспечить правильное заполнение нового поля до корректировки приложения, в качестве временного решения создаётся триггер, который заполняет значение этого поля, если значение для него отсутствует в запросе. Если поле не имеет значения по умолчанию, то логика работает как нужно. console 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. 31. 32. 33. 34. 35. 36. 37. Однако при наличии такого значения оно добавляется в псевдотаблицу NEW до срабатывания триггера, и при неравенстве значения по умолчанию и значения, присваиваемого триггером, возникает проблема. console 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. Напомните, есть ли способ проще, чем обращение к INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT, получить значение поля по умолчанию, чтобы сравнить с ним значение NEW.field? PS. Понимаю, что DEFAULT VALUE известно разработчику. Считайте, что нужно избежать забывчивости разработчика - изменив структуру, он забыл изменить триггер. PPS. Понимаю, что более правильное - это присвоение именно DEFAULT VALUE. Считайте, что меня любопытство заело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 09:03 |
|
||
|
Получить DEFAULT VALUE в триггере - напомните, есть ли простое решение?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2016, 17:50 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39341113&tid=1831247]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 485ms |

| 0 / 0 |
