Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
Привет. Задача заключается в том, чтобы написать триггер на таблицу, который будет отслеживать какое поле изменяется. Он должен: 1. Выбрать перечень полей в таблице 2. Для каждого поля сравнить значения в NEW и OLD 3. выполнить остальные действия ... Вот триггерная процедура: Код: 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. Вариант NEW.field.name ессно не работает. Как можно сделать что-то вроде 'NEW.' || field.name? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 14:09 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
может попробовать другой язык для тригера? в plpgsqle не получица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 19:14 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
Не против :) А как это сделать, например, в С? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 08:12 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
Вопрос так часто возникает что разработчики бы напряглись да сделали бы обращение к полю в NEW ну хотя бы по номеру :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 09:28 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
Ну так отпиши им. Только сначала советую внимательно вычитать TODO. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:49 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
либо вышли патч :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 10:58 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
на pl/Perl: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 11:26 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
.gc Спасибо. Это уже что-то. Перловый пример нравиться больше, т.к. не надо создавать кучу триггерных функций на все логгируемые таблицы (как в примере по ссылке). А как на С это будет выглядеть можешь сказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 13:27 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
DDT .gc Спасибо. Это уже что-то. Перловый пример нравиться больше, т.к. не надо создавать кучу триггерных функций на все логгируемые таблицы (как в примере по ссылке). А как на С это будет выглядеть можешь сказать? АХЕЗ... может быть примерно так: Код: 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. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:54 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
раз уж пошла такая пьянка, подскажите, плз, процедуры на Си нужно как то компилять/подключать или можно просто писать как на PL\PgSQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 04:02 |
|
||
|
Составное имя переменной
|
|||
|---|---|---|---|
|
#18+
.gc внимание! код тестовый и стопудово глючный! Да, есть кое-какие проблемы, с NULL-значениями, например, или с Код: plaintext 1. Мне кажется, что хранение oldvalue - совершенно ни к чему, достаточно и newvalue, но начальные значения должны добавляться при insert (соответственно триггер должен уметь работать и в режиме "after insert"). 2. Кроме имени таблицы было бы неплохо хранить имя схемы ( SPI_getnspname( trigdata-> tg_relation) ). 3. Лог совершенно не имеет смысла, если не хранить (опционально) значение первичного ключа для изменяемых данных. Поле, содержащее значение ключа можно передать через аргументы триггера, но доставать их придётся не из PG_FUNCTION_ARGS , а из trigdata->tg_trigger->tgargs . А так - всё клёво. Твой пример заставил меня написать это дело с нуля. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 09:22 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34134677&tid=2005936]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 369ms |

| 0 / 0 |
