mysql 触发器定义变量_声明变量MySQL触发器

我的问题对你来说可能很简单,如果你习惯了MySQL。我习惯于PostgreSQL SGBD,我正在尝试将PL/PgSQL脚本翻译成MySQL。声明变量MySQL触发器

以下是我有:

delimiter //

CREATE TRIGGER pgl_new_user

AFTER INSERT ON users FOR EACH ROW

BEGIN

DECLARE m_user_team_id integer;

SELECT id INTO m_user_team_id FROM user_teams WHERE name = "pgl_reporters";

DECLARE m_projects_id integer;

DECLARE cur CURSOR FOR SELECT project_id FROM user_team_project_relationships WHERE user_team_id = m_user_team_id;

OPEN cur;

ins_loop: LOOP

FETCH cur INTO m_projects_id;

IF done THEN

LEAVE ins_loop;

END IF;

INSERT INTO users_projects (user_id, project_id, created_at, updated_at, project_access)

VALUES (NEW.id, m_projects_id, now(), now(), 20);

END LOOP;

CLOSE cur;

END//

但MySQL工作台给我一个错误的DECLARE m_projects_id。我不太明白,因为我的指令同上面两行......

任何提示?

编辑:neubert解决了这个错误。谢谢。

不过不失,当我尝试插入到用户:

Error Code: 1329. No data - zero rows fetched, selected, or processed

你有什么想法?或者更好的,你知道我怎么能得到一个更好的错误信息?

2013-04-05

Arthur

+1

看看这里:http://dba.stackexchange.com/questions/25405/event-scheduler-no-data-zero-rows-fetched-selected-or-processed –

2013-04-22 06:05:24

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL触发器中,你可以使用DECLARE语句来声明变量变量可以用于存储和操作数据,以及进行条件判断和循环等操作。 以下是一个示例,展示了如何在MySQL触发器声明和使用变量: ```sql DELIMITER // CREATE TRIGGER update_total_orders AFTER INSERT ON orders FOR EACH ROW BEGIN DECLARE customer_name VARCHAR(50); DECLARE order_count INT; -- 获取插入行的客户名 SELECT name INTO customer_name FROM customers WHERE id = NEW.customer_id; -- 获取客户的订单总数 SELECT total_orders INTO order_count FROM customers WHERE id = NEW.customer_id; -- 更新客户的订单总数 SET order_count = order_count + 1; -- 输出调试信息 SELECT CONCAT('Updating total orders for customer ', customer_name, ' to ', order_count) AS message; -- 更新"customers"表中对应客户的订单总数 UPDATE customers SET total_orders = order_count WHERE id = NEW.customer_id; END; // DELIMITER ; ``` 在这个示例中,我们声明了两个变量:customer_name和order_count。首先,我们使用SELECT INTO语句将插入行的客户名存储到customer_name变量中。然后,我们使用同样的方法将该客户的订单总数存储到order_count变量中。 接下来,我们通过SET语句将order_count增加1,以更新订单总数。在这之后,我们使用SELECT语句输出一条调试信息,显示更新后的订单总数。 最后,我们使用UPDATE语句更新"customers"表中对应客户的订单总数,将变量order_count的值赋给total_orders列。 注意,在触发器中使用变量时,需要使用DECLARE语句进行声明,并使用SET语句进行赋值和操作。 希望这个示例能帮助你理解在MySQL触发器中如何声明和使用变量。如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值