【问题标题】:My trigger is not working in MySQL我的触发器在 MySQL 中不起作用
【发布时间】:2013-05-26 23:06:38
【问题描述】:

我想在 MySQL 中创建一个触发器,但是当我运行创建代码时它显示一条错误消息:

CREATE TRIGGER before_employee_update 
    BEFORE UPDATE ON trigger
    FOR EACH ROW BEGIN

    update users
    SET username= 'krishna',
        password= 'abc';
END

错误是:

1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 '触发每行开始插入用户设置用户名='kr' 在第 2 行

这是错误指向的代码:

BEFORE UPDATE ON trigger
                 ^^^^^^^

【问题讨论】:

  • 看来我们需要更详细的描述来帮助...
  • 不工作不是问题。你能说明你的实际问题是什么吗?
  • 我是 mysql 存储过程的新手,我有表触发器和用户
  • 错误是这样的:--“1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 'trigger FOR EACH 附近使用的正确语法ROW BEGIN INSERT INTO users SET username= 'kr' at line 2"
  • 当我在 mysql 中运行此代码时出现以下错误

标签: mysql triggers


【解决方案1】:

TRIGGER 是 MySQL 中的保留字,你应该引用这个名字 -

CREATE TRIGGER before_employee_update
  BEFORE UPDATE
  ON `trigger`
  FOR EACH ROW
BEGIN
  UPDATE users SET username = 'krishna', password = 'abc';
END

作为一种解决方法 - 重命名表 trigger

【讨论】:

  • 使用DROP TRIGGER trigger_name; comamnd。或者您也可以使用免费的 GUI 工具 - dbForge Studio for MySQL(速成版)。
【解决方案2】:

insert 的正确语法是:

insert into users(username, password)
    select 'krishna', 'abc';

您的语法即将更新:

update users
SET username= 'krishna',
    password= 'abc';

【讨论】:

  • @Nirdosh 。 . .该操作在不同的表上,因此您可以使用更新或删除。
  • 你能给我写一个简单的触发器,这样我就可以按照它的语法,因为我不能在 mysql 中执行单个触发器。
猜你喜欢
  • 2017-04-22
  • 2019-01-17
  • 2012-09-04
  • 2013-04-26
  • 2021-08-04
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多