it-swarm-eu.dev

Jak vytvořit spouštěč, který aktualizuje pole datum a časové pole po úpravě řádku?

Vytvořil jsem tabulku testtable uvnitř databáze testbase, která má následující strukturu:

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

Jak však zapíšu spoušť tak, že bude aktualizovat tento konkrétní řádek, který byl změněn (nebo aktualizován novými informacemi) a zaznamenat datum změny do expire_date pole a čas modifikace do expire_time pole? (nebo pokud je to možné?)

10
Jack

Bylo by to docela snadné, ale ve skutečnosti bych doporučil změnit logiku příkazu, který vkládá/aktualizuje data tak, aby v tomto bodě přidával další informace.

Pokud byste však chtěli pokračovat se spouští, můžete udělat něco takového:

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  

Pomocí tabulky INSERTED zjistíte product_no řádků, které byly změněny/vytvořeny. Další informace o spouštěčích se dozvíte na níže uvedeném odkazu:

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

Doufám, že vám to pomůže.

8
Mr.Brownstone