CREATE TRIGGER Base_Table_tr
AFTER
 DELETE ON Base_Table 
FOR EACH ROW
    INSERT INTO Base_Table(Base_Type,Base_Name)
    SELECT '006','客户服务'
    FROM Base_Table
    WHERE NOT EXISTS(SELECT base_name FROM Base_Table WHERE Base_Name = '客户服务' limit 0,1)
DELETE FROM Base_Table 
WHERE Base_Name = '客户服务'
出错了,我希望在删除Base_Table  的base_name=客户服务字段的时候保护这条数据该怎么做?

解决方案 »

  1.   

    CREATE TRIGGER Base_Table_tr
    before
    DELETE ON Base_Table
    FOR EACH ROW
    begin
        if  EXISTS(SELECT base_name FROM Base_Table WHERE Base_Name = '客户服务' ) then
    rollback 
        end if
    end
      

  2.   

    这个不是sql server好像不能用 if  EXISTS 吧。
      

  3.   

    DELIMITER $$CREATE
        /*[DEFINER = { user | CURRENT_USER }]*/
        TRIGGER `zz`.`ff` after DELETE
        ON `zz`.`aa2`
        FOR EACH ROW BEGIN
    begin
        if  (SELECT count(*) FROM ff WHERE Base_Name = '客户服务' )>0 then
         insert into ff select * from old;
        end if;
    end;
        END$$DELIMITER ;
      

  4.   

    楼上的朋友非常感谢你的回答,可是mysql里面if好像不是流程控制语句。 if  (SELECT count(*) FROM ff WHERE Base_Name = '客户服务' )>0 then 
        insert into ff select * from old;
        end if; 
    用if是不能通过运行的 在mysq里面if好像就是函数只 支持这种简单形式的。
    SELECT IF(0.1,1,0);
      

  5.   

    错,MYSQL支持IF这种语句,不过MYSQL触发器功能比较弱,似乎不能对本表操作。
      

  6.   

    可以用php在外面判断的 ,只是我想研究下有没有这种数据保护方式,非常感谢给分了