Как создать триггер, обновляющий поле даты и поле времени при изменении строки?

Я создал таблицу testtable внутри базы данных testbase, которые имеют следующую структуру:

product_no (int, not null)
product_name (varchar(30), not null)
price (money, null)
expire_date (date, null)
expire_time (time(7), null)

Однако как написать триггер, чтобы он обновил эту конкретную строку, которая была изменена (или обновлена ​​новой информацией), и запишите дату изменения в expire_date и время модификации в поле expire_time? (или если это возможно?)

10 голосов | спросил Jack 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 10 Sep 2012 08:55:09 +0400 2012, 08:55:09

1 ответ


8

Было бы довольно легко, но я бы рекомендовал изменить логику команды, которая вставляет /обновляет данные, чтобы добавить дополнительную информацию на этом этапе.

Однако, если вы хотите продолжить запуск, вы можете сделать что-то вроде этого:

create trigger my_trigger
on my_table
after insert, update
as
begin
declare @dt datetime = getdate();
update a
set expire_date = CONVERT(DATE, @dt, 101),
    expire_time = CONVERT(TIME, @dt)
from my_table as a
join inserted as b 
on a.product_no = b.product_no; 
end
go  

Это использует таблицу INSERTED, чтобы узнать product_no строк, которые были изменены /созданы. Вы можете узнать больше о триггерах по ссылке ниже:

http://msdn.microsoft.com/en-us/library/ms189799.aspx

Надеюсь, это поможет вам.

ответил Mr.Brownstone 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 10 Sep 2012 10:48:50 +0400 2012, 10:48:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132