2014-12-07 40 views
0

我有一个表命名artist_log &它具有以下结构传递参数触发

[action_type  char(6)] 
[artist_id  int] 
[mod_date  datetime default current_timestamp] 

创建的过程如下所述:

create procedure update_artists 
    @m_artist_id int, 
    @m_place_of_birth varchar(60) 
as 
begin 
    update artists 
    set place_of_birth = @m_place_of_birth 
    where artist_id = @m_artist_id ; 
end ; 

,并与下面的语句

执行它
execute update_artists 2019, 'Delhi' ; 

我想创建一个触发器UPDT_LOG它将在表artist_log中添加一条记录,其值为UPDATED,值artist_id列应与参数viz相同。 @m_artist_id已通过执行上述程序。任何帮助?

+0

对于'action_type char(6)'列'UPDATED'太长了...... – 2014-12-07 12:19:30

+0

将它作为UPDATE。 – Lalu 2014-12-07 12:32:56

回答

1

您不必将参数传递给触发器。无论您更新哪些行,都可以使用触发器主体中的DELETED和INSERTED表访问。

create trigger updt_log on artists for update as 
insert into artist_log (action_type, artist_id) 
select 'UPDATE', artist_id 
from inserted 

这是最简单的触发形式。如果artist_id可以通过设计进行更新,那么您也必须处理该情况。

+0

完美的作品。谢谢 – Lalu 2014-12-08 10:48:56