2014-12-07 63 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