Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
26.11.2001, 10:57
|
|||
|---|---|---|---|
|
|||
Как триггером менять вставляемое значение? |
|||
|
#18+
Уважаемые коллеги! Возникла необходимость в триггере перехватывать вставляемое значение даты и увеличивать его на час. Я нарисовал такой код: CREATE TRIGGER AddOneHour ON [dbo].[Payments] FOR INSERT, UPDATE AS IF UPDATE(ReceiveMoneyDate) AND (NOT Inserted.ReceiveMoneyDate IS NULL) SET Inserted.ReceiveMoneyDate=DATEADD(HOUR,1,Inserted.ReceiveMoneyDate) Понятно, что изменять таблицу Inserted SQL не хочет. Как сделать триггер правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2001, 11:34
|
|||
|---|---|---|---|
Как триггером менять вставляемое значение? |
|||
|
#18+
всё в принципе не так CREATE TRIGGER AddOneHour ON [dbo].[Payments] FOR INSERT, UPDATE AS IF UPDATE(ReceiveMoneyDate) update Payments set ReceiveMoneyDate=DATEADD(HOUR,1,t.ReceiveMoneyDate) from Paymentst, Inserted i where t.KeyFld=i.KeyFld AND (NOT i.ReceiveMoneyDate IS NULL) где KeyFld - ваше ключевое поле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2001, 11:35
|
|||
|---|---|---|---|
Как триггером менять вставляемое значение? |
|||
|
#18+
CREATE TRIGGER AddOneHour ON [dbo].[Payments] FOR INSERT, UPDATE AS IF UPDATE(ReceiveMoneyDate) update Payments SET ReceiveMoneyDate = DATEADD(HOUR,1,Payments.ReceiveMoneyDate) from inserted where Payments.PKField = inserted.PKField and Payments.ReceiveMoneyDate IS NOT NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2001, 12:08
|
|||
|---|---|---|---|
|
|||
Как триггером менять вставляемое значение? |
|||
|
#18+
Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2001, 18:56
|
|||
|---|---|---|---|
Как триггером менять вставляемое значение? |
|||
|
#18+
Для SQL 2000 еще изящнее: CREATE TRIGGER AffOneHour ON [dbo].[Payments] instead of insert as insert into [dbo].[Payments] (ReceiveMoneyDate) select DATEADD(HOUR,1,I.ReceiveMoneyDate) from Inserted I where not I.ReceiveMoneyDate is Null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2001, 12:01
|
|||
|---|---|---|---|
Как триггером менять вставляемое значение? |
|||
|
#18+
2Garya Хе-хе, а у Вас ошибочка... Записи, у которых Inserted.ReceiveMoneyDate is Null вообще не будут вставляться в Payments. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2001, 09:03
|
|||
|---|---|---|---|
Как триггером менять вставляемое значение? |
|||
|
#18+
Эта "ошибочка" преднамеренная. Я изобразил один из вариантов решения, когда значение увеличиваемого времени вообще не задано. Возможно, автора вопроса возникнут другие варианты решения этой проблемы. Ведь в вопросе не оговорено, как он хочет разрешать такую ситуацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1824775]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 350ms |

| 0 / 0 |
