Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql server的触发器语法_Sql Server - Fatal编程技术网

Sql server sql server的触发器语法

Sql server sql server的触发器语法,sql-server,Sql Server,我已经意识到,对于不同的软件,触发器的语法略有不同。SQL Server 2012中以下代码的语法是什么 Create trigger before_playercatalogue_update before update on player_catalogue For each row Begin Insert into player_audit set action = 'update', playerid = old.playerid fn

我已经意识到,对于不同的软件,触发器的语法略有不同。SQL Server 2012中以下代码的语法是什么

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

语法完全不同。它看起来像:

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”触发器
  • SQL Server(或其他数据库)中的
    insert
    不支持
    set
    子句
  • SQL Server没有“新”和“旧”。它使用插入的
    视图,即已更改记录的视图

您提供的代码是否存在问题?您是否收到错误消息,或者假设sql server 2012与其他版本之间存在语法差异?请看这篇文章,sql也没有为每一行提供
,但在这种情况下,这并不重要,它在功能上是相同的。