在mysql中创建触发器出错,高人解

第一个触发器里面 set @email:=NEW.password; 是不是改为set @email:=NEW.email;?猜测 虽然这个赋值语句可能没错,但是你下面的第一条insert语句里面cdb_members的showemail字段匹配的@email:=NEW.password,会出现类型转换错误的吧?你自己看看。第二条insert语句 insert into coc_enewsmember (user...
在mysql中创建触发器出错,高人解
syntax错误是指你的语句结构错误,语法错误,就是说你的语句里面有疏忽的地方

第一个触发器里面
set @email:=NEW.password; 是不是改为set @email:=NEW.email;?猜测
虽然这个赋值语句可能没错,但是你下面的第一条insert语句里面cdb_members的showemail字段匹配的@email:=NEW.password,会出现类型转换错误的吧?你自己看看。
第二条insert语句
insert into coc_enewsmember (userid,username,password,email,registertime,groupid,checked) values (@myid,@name,@pwd,email,@regdate,1,1);
values后面的email肯定错了嘛,要改为@email?

第二个触发器也是类似的语法错误
create trigger的时候是on表 uchome_spacefield ,你下面的update的时候就是另外一张表uchome_space了,如果是两张不同的表的话,不能直接传的吧,new.field_1 和 uid = old.uid。

都是很粗心的错误,你自己看看对不对,希望对你有帮助。2008-08-25
你犯了三个错误——

一、赋值前没声明变量

MySQL在赋值给变量前应该首先用declare语句声明变量名和类型,例如declare myid int;

二、赋值语句错误

set @myid:=NEW.uid; 这条赋值语句是错误的。在MySQL里,赋值语句应该写做set myid=NEW.uid;

三、结束符没有指定

MySQL默认的语句结束符是分号;所以如果你在写触发器定义语句的过程中遇到了分号;则MySQL就认为定义语句结束了,从而造成这个触发器的定义是不完整的,因此出现了语法错误的提示。
改正的方法是在phpmyadmin命令框下的Delimiter(结束符)选项中改为其他的字符,例如斜线/。执行后就可以了。2008-08-25
mengvlog 阅读 9 次 更新于 2025-07-21 07:55:12 我来答关注问题0
  • 解决MySQL触发器添加出错问题,通常有两种方法。一种简便的方法是使用MySQL的内置工具检查和修复表。执行`check table`命令检查表状态,若显示"Status is OK"则无需修复。如果显示有错误,使用`repair table`命令进行修复。修复后再次执行`check table`以确认状态。在新版phpMyAdmin中同样能使用check/repair功...

  • 解决方法:修改触发器名称或删除已有的同名触发器。2. 创建触发器权限不足 在MySQL中,创建触发器需要具有CREATE TRIGGER权限。如果当前用户没有该权限,将无法创建触发器。此时,我们需要检查当前用户的权限设置,并赋予其CREATE TRIGGER权限。以下是一个示例SQL语句,其中将当前用户的权限设置为可以创建触发...

  • 触发器逻辑错误:逻辑处理不当:触发器中的SQL语句可能包含逻辑错误,如错误的条件判断、循环或递归调用等,这些错误在不同环境下可能表现不同。解决方案:仔细检查触发器的逻辑,确保它在所有预期的情况下都能正确执行。可以使用日志记录或调试工具来帮助诊断问题。权限问题:权限不足:在某些数据库环境中,...

  • 第一个触发器里面 set @email:=NEW.password; 是不是改为set @email:=NEW.email;?猜测 虽然这个赋值语句可能没错,但是你下面的第一条insert语句里面cdb_members的showemail字段匹配的@email:=NEW.password,会出现类型转换错误的吧?你自己看看。第二条insert语句 insert into coc_enewsmember (user...

  • 在MySQL中,当你创建一个触发器时,它可能会引发3813错误。这是由于MySQL使用了一种名为DEFINER的机制,该机制使用当前MySQL用户的权限来执行触发器代码。所以,当你使用一个不允许执行触发器的MySQL用户时,就会引发3813错误。解决方法一:你可以在创建触发器时明确指定执行该触发器的用户。例如,在创建一...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部