2016-04-15 7 views
-1

トリガーの構文は、ソフトウェアごとに若干異なります。 SQL Server 2012で次のコードの構文はどのようになりますか?SQLサーバーのトリガー構文

Create trigger before_playercatalogue_update 
before update 
on player_catalogue 
For each row 
Begin 
    Insert into player_audit 
    set action = 'update', 
     playerid = old.playerid 
     fname = old.fname, 
     datachange = (Now); 
End 
+0

提供したコードに問題はありますか?エラーメッセージが表示されたり、SQL Server 2012と別のバージョンの間に構文の違いがあるとしますか? –

+1

この投稿を見てくださいhttp://stackoverflow.com/questions/642822/how-can-i-do-a-before-updated-trigger-with-sql-server – Thomas

答えて

0

構文がかなり異なります。

Create trigger after_playercatalogue_update 
on player_catalogue after update 
as 
Begin 
    Insert into player_audit(action, playerid, fname, datachange) 
     select 'update', playerid, fname, getdate() 
     from inserted; 
End; 

注変更の一部:

  • これはafterトリガーであることは次のようになります。 SQL Serverには "before"トリガがありません。
  • set句は、SQL Server(または他のデータベース)のinsertではサポートされていません。
  • SQL Serverには「新規」と「古い」がありません。変更されたレコードのビューであるinsertedを使用します。
+1

SQLには、それぞれに 'がありませんこの場合は重要ではありませんが、機能的には同じです。 –