Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вычисляемые поля
|
|||
|---|---|---|---|
|
#18+
Добрый день! Подскажите пожалуйста, можно ли в MSSQL через триггеры(в первую очередь for insert) организовать вычисление некоторых полей? Пример: ALTER TRIGGER ti_coming_detail ON coming_detail FOR INSERT AS BEGIN DECLARE @id INT, @new_price, @new_quantity DECLARE cur CURSOR FORWARD_ONLY STATIC READ_ONLY FOR SELECT i.id, i.price AS @new_price, i.quantity AS new_quantity FROM inserted i OPEN cur FETCH NEXT FROM cd_insert_cur INTO @id, @new_card_id, @new_quantity WHILE (@@FETCH_STATUS = 0) BEGIN -- естественно этот код не работает UPDATE coming_detail SET coming_sum = @new_price * @new_quantity WHERE id = @id -- естественно этот код не работает FETCH NEXT FROM cur INTO @id, @new_price, @new_quantity END CLOSE cur DEALLOCATE cur END Смысл всей затеи простой. Например это может называться денормализацией. Насколько я знаю в Oracle триггерами уровня строки это делается за 10 сек. С уважением, Андрей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2001, 13:19 |
|
||
|
Вычисляемые поля
|
|||
|---|---|---|---|
|
#18+
В SQL2000 можно сразу в таблице создать вычисляемое поле CREATE TABLE coming_detail (id , price, quantity, coming_summa AS price * quantity) и не надо никаких тригеров PS Как бы между прочим - а зачем вы используете в тригерке курсор. IMHO так было бы лучше ALTER TRIGGER ti_coming_detail ON coming_detail FOR INSERT AS BEGIN UPDATE coming_detail SET coming_sum = i.price * i.quantity FROM inserted i INNER JOIN coming_detail c ON c.id = i.id END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2001, 14:11 |
|
||
|
Вычисляемые поля
|
|||
|---|---|---|---|
|
#18+
Уважаемый Andrew! Я присоединяюсь к ответу Glory и хотел бы на будующее попросить. Я никогда не работал с Oracle. Может быть в нем на порядок больше возможностей. Ну если Вы уж пишите "знаю в Oracle триггерами уровня строки это делается за 10 сек" - хотя бы приведите пример! Мне это например интересно будет, наверное и не только мне. Ну достало уже, не первый раз вижу - "а вот в Oracle есть то, есть сё, а это вообще делается само", и хоть бы кто показал чего! PS Я лично сейчас в "триггерах уровня строки", как и в курсорах, вижу только вред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 05:53 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32009258&tid=1826229]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 327ms |

| 0 / 0 |
