我是新手, 今天创建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触发器
/* 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触发器
DELIMITER $$
CREATE TRIGGER catedelete BEFORE DELETE ON category
FOR EACH ROW
BEGIN
DELETE FROM category WHERE pcateid=OLD.cateid;
END$$
DELIMITER ;
for each row
delete from category where pcateid=OLD.cateid;另外注意这个语句语法上没问题了,但是仍然错误。 MYSQL不允许在本表的触发器对本表进行操作以防递归触发。
你说得对, 虽然语法对了, 但删除时会弹出以下错误:
Error deleting:Can't update table 'category' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
谢谢你, 我要结我的处女贴了.
你说得对, 刚才我试了一下, 果然出现下面的错误:
Error deleting:Can't update table 'category' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
学习了, 我得把表改一下, 谢谢版主!