|
|
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
Пожалуйста, ногами не бейте, можете отсылать куда угодно, лишь бы полезная была ссылка. Из специальной проги в таблицу (назовём её tblMain) загружаются данные. Нужно проверить их правильность. Проверка достаточно сложная, точнее не простая (бух.учёт, поэтому всяких суммирований - тьма). Найденные ошибки просто записывают в отдельную табличку (назовём её tblError), т.е. даже если найдены ошибки, загрузка данных в таблицу tblMain осуществляется полностью. Вопрос, собственно, в сабже: либо повесить на таблицу триггер on insert или в спец.проге прописать, чтобы сразу за загрузкой запускалась ХП, которая будет делать тоже самое, что и триггер. Что предпочтительней? Понимаю, что вопрос очень общий. готов уточнить всё, что потребуется. За не компетентность - извиняйте. P.S. вся эта байда происходит в MS SQL 2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 00:05 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
IMHO, было бы лучше задать вопрос на профильном форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 01:14 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
Aleah чтобы сразу за загрузкой запускалась ХП как можно в многопользовательской системе проектировать сразу за..... А если не успеешь? IMHO - триггер всегда хуже ХП, и прошлое тысячилетие - делать всё на ХП - "НовыйДокумент (фффф ааа рррр олллл ддджжд)". Там внутри - бизнес-логика по вводу нового документа (с обработкой ошибок в виде raise "В документе отсутствует дата!"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 11:45 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
Petro123 Aleah чтобы сразу за загрузкой запускалась ХП как можно в многопользовательской системе проектировать сразу за..... А если не успеешь? IMHO - триггер всегда хуже ХП, и прошлое тысячилетие - делать всё на ХП - "НовыйДокумент (фффф ааа рррр олллл ддджжд)". Там внутри - бизнес-логика по вводу нового документа (с обработкой ошибок в виде raise "В документе отсутствует дата!"). На мой взгляд, триггер крайне не желателен. Смотря как активно идет пополнение данных. Учтите. что табличка inserted создается оооочень медленно. Что касается ХП, то все хорошо, кроме того, как ее запускать спразу после... Хотя и это решаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 12:00 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
Ivan A KostkoУчтите. что табличка inserted создается оооочень медленно.Заинтриговали. Минуту, час, сутки ? Можете подтвердить чем-нибудь свое утверждение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:22 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
Petro123 Aleah чтобы сразу за загрузкой запускалась ХП как можно в многопользовательской системе проектировать сразу за..... А если не успеешь? IMHO - триггер всегда хуже ХП, и прошлое тысячилетие - делать всё на ХП - "НовыйДокумент (фффф ааа рррр олллл ддджжд)". Там внутри - бизнес-логика по вводу нового документа (с обработкой ошибок в виде raise "В документе отсутствует дата!"). Всем большое спасибо. Сама система не моя - мне её передали на поддержку и доработку, поэтому по поводу многопользовательности буду ещё выяснять, но как я понял загружать данные будут а) редко (несколько раз в месяц) б) такими правами (на загрузку) будут обладать пара человек (а может и вовсе один) А почему "триггер всегда хуже"? Можете посоветовать литературу по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:42 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
AleahМожете посоветовать литературу по этому поводу?Как правило, чтение BOL вполне достаточно. Также рекомендуется следовать принципу "лучше один раз проверить, чем 100 раз услышать(прочитать)". И, очень полезно задавать вопросы по конкретному серверу на профильном форуме, шансы на получение правильного ответа сильно возрастают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 14:16 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
ChA Ivan A KostkoУчтите. что табличка inserted создается оооочень медленно.Заинтриговали. Минуту, час, сутки ? Можете подтвердить чем-нибудь свое утверждение ? http://www.sql.ru/forum/actualthread.aspx?tid=355450 Создайте триггер на апдэйт или инсерт. который просто будет брать данные и писать их в доп табличку... Или просто их модифицировать простетской ф-цией... Для простоты сделайте в триггере: SELECT 1 AS is_exist WHERE EXISTS (SELECT * FROM inserted) Больше ничего... Сделайте добавление(или апдэйт - в зависимости от триггера) 10000 строк в таблицу с триггером, а потом без триггера. Соотношение времени огласите на сайте. У меня: 1:32 с триггером и 0:03 без него... На мой взгляд разница очевидна! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 15:42 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
Ivan A KostkoНа мой взгляд разница очевидна!Такой пример устроит ? Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Как бы результаты несколько расходятся с Вашим утверждением о невероятно долгом создании таблиц INSERTED или DELETED, нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 17:59 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
AleahP.S. вся эта байда происходит в MS SQL 2000 в курсе что в MSSQL триггер срабатывает для всех записей загружаемых одним insert-ом, а не накаждую запись? соответственно придется раскручивать таблицу inserted и в цикле/курсоре проверять каждую запись, что не есть гуд для производительности. Да и грузить большие объемы лучше BCP и bulk insert-ом. здесь говорится: Выполняйте все проверки ссылочной целостности и верности данных, используя ограничения (внешние ключи и проверки доменной целостности), вместо использования триггеров, т.к. это быстрее. Ограничьте использование триггеров только для задач аудита, специальных задач и проверок, которые не могут быть выполнены с использованием ограничений. Ограничения также сохраняют Ваше время, т.к. Вам не надо писать код для этих проверок, позволяя системе управления базами данных делать все это за Вас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 11:31 |
|
||
|
что выбрать: ХП или Триггер?
|
|||
|---|---|---|---|
|
#18+
Роман Дынниксоответственно придется раскручивать таблицу inserted и в цикле/курсоре проверять каждую запись Строго говоря, это не безусловно т.к. зависит от того, как написать эту "достаточно сложную проверку" IMO принципиальная разница лишь в том, что триггер (если не использовать разных уловок) будет срабатывать при любом событии на которое он расчитан. А это событие может не обязательно подниматься как следствие "загрузки данных из специальной проги". В то время как ХП можно привязать именно к этому процессу. Срабатывание триггера "всегда" это его и достоинство и недостаток одновременно. Это к вопросу о почему "триггер всегда хуже"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 13:12 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34119286&tid=1544914]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 423ms |

| 0 / 0 |
