我是新手, 今天创建delete触发器时发生了错误, 详情如下: /*==============================================================*/
/* Table: category                                              */
/*==============================================================*/
create table category
(
   cateid               smallint not null,
   catename             varchar(30) not null,
   pcateid              smallint not null,
   primary key (cateid)
);下面是创建delete触发器
create trigger catedelete before delete on category
for each row
begin
 delete from category where pcateid=OLD.cateid;
end;但是MySQL提示下面的语法错误: 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4这是怎么回事, 求各位大牛解答啊, 感激不尽.MySQLdelete触发器

解决方案 »

  1.   

    在MYSQL TRIGGER中不能对本表进行操作
    DELIMITER $$
    CREATE TRIGGER catedelete BEFORE DELETE ON category
     FOR EACH ROW
     BEGIN
      DELETE FROM category WHERE pcateid=OLD.cateid;
     END$$
    DELIMITER ;
      

  2.   

    create trigger catedelete before delete on category
    for each row
     delete from category where pcateid=OLD.cateid;另外注意这个语句语法上没问题了,但是仍然错误。 MYSQL不允许在本表的触发器对本表进行操作以防递归触发。
      

  3.   


    你说得对, 虽然语法对了, 但删除时会弹出以下错误:
    Error deleting:Can't update table 'category' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
    谢谢你, 我要结我的处女贴了.
      

  4.   


    你说得对, 刚才我试了一下, 果然出现下面的错误:
    Error deleting:Can't update table 'category' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
    学习了, 我得把表改一下, 谢谢版主!