Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как триггером менять вставляемое значение?
|
|||
|---|---|---|---|
|
#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, 10:57 |
|
||
|
Как триггером менять вставляемое значение?
|
|||
|---|---|---|---|
|
#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:34 |
|
||
|
Как триггером менять вставляемое значение?
|
|||
|---|---|---|---|
|
#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, 11:35 |
|
||
|
Как триггером менять вставляемое значение?
|
|||
|---|---|---|---|
|
#18+
Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 12:08 |
|
||
|
Как триггером менять вставляемое значение?
|
|||
|---|---|---|---|
|
#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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 18:56 |
|
||
|
Как триггером менять вставляемое значение?
|
|||
|---|---|---|---|
|
#18+
2Garya Хе-хе, а у Вас ошибочка... Записи, у которых Inserted.ReceiveMoneyDate is Null вообще не будут вставляться в Payments. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 12:01 |
|
||
|
Как триггером менять вставляемое значение?
|
|||
|---|---|---|---|
|
#18+
Эта "ошибочка" преднамеренная. Я изобразил один из вариантов решения, когда значение увеличиваемого времени вообще не задано. Возможно, автора вопроса возникнут другие варианты решения этой проблемы. Ведь в вопросе не оговорено, как он хочет разрешать такую ситуацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2001, 09:03 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1824775]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
57ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 333ms |

| 0 / 0 |
