/*定义一个BEFORE行级触发器,为教师表CM_Teacher定义完整性规则“教授的工资不得低于
5000元,如果低于4000元的话,自动改为4000元”*/
Create Trigger Insert_Or_Update_Sal          /*在教师表CM_Teacher上定义触发器*/
before INSERT OR UPDATE ON CM_Teacher  /*触发事件是插入或者更新操作*/
For Each Row  /*这是行触发器*/
As Begin
if(CM_Teacher.CM_Teacher_post='教授')and(CM_Teacher.CM_Teacher_salary<5000)then
CM_Teacher.CM_Teacher_salary=5000;
end if;
End; 
消息 102,级别 15,状态 1,过程 Insert_Or_Update_Sal,第 4 行
'before' 附近有语法错误。
消息 156,级别 15,状态 1,过程 Insert_Or_Update_Sal,第 7 行
关键字 'then' 附近有语法错误。另外,我用的是sql server2005

解决方案 »

  1.   

    create trigger gg on tb
    --after INSERT ,UPDATE  --写法1,后触发
    --instead of INSERT ,UPDATE  --写法2,前触发
    --for INSERT ,UPDATE  --写法3,前触发按照你的意思是想在更新前,先触发(写法2,写法3)
      

  2.   

    找个例子看看先:
    http://blog.csdn.net/greatmumuke/archive/2008/03/18/2193359.aspx
      

  3.   

    --假设关键字为IDCreate Trigger Insert_Or_Update_Sal ON CM_Teacher for INSERT , UPDATE 
    As 
    Begin
    if exists (select 1 from inserted where CM_Teacher_post = '教授' and CM_Teacher_salary < 4000) 
       update CM_Teacher set CM_Teacher_salary = 4000 where id = (select id from inserted)
    End;  
      

  4.   

    不知道还有这么多,一直都用 for
    看来不能只是死学,我反省