【问题标题】:how to show a message if condition is true in mysql 5.0 trigger?如果在 mysql 5.0 触发器中条件为真,如何显示消息?
【发布时间】:2013-06-08 04:52:44
【问题描述】:

我有一个触发器

 DELIMITER $$
  DROP TRIGGER IF EXISTS before_insert_on_emp $$
  CREATE TRIGGER before_insert_on_emp
  BEFORE insert ON empefforts
  FOR EACH ROW BEGIN
  DECLARE MSG VARCHAR(100);
  IF (NEW.TIMING) > 60
  THEN
    SET MSG='Error: TIMING must be <=60.';
  END IF;
 END$$
DELIMITER ;

当条件为真时,我想在控制台上显示 MSG VARIABLE 值。 我怎样才能显示这个值。我正在使用 mysql 5.0.18 版本...

【问题讨论】:

  • 你试过SELECT MSG;吗?
  • 在 MySql ver stackoverflow.com/q/229765/1920232、stackoverflow.com/q/24/1920232
  • @Stephan 是的,我试过了,但它给了我错误:不允许从触发器返回结果集。
  • @MaheshPatidar 对不起,我刚才看到它是一个触发器......在这种情况下,唯一的选择是将消息插入日志表中
  • @Stephan 我不能在控制台上打印吗?

标签: mysql sql triggers


【解决方案1】:

在做了一些研究后,我发现有一种方法......使用SIGNAL 喜欢:

SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'Error: TIMING must be <=60.';

更新:打印消息的过程示例:

DELIMITER //
CREATE PROCEDURE show_message()
BEGIN
    SELECT 'Error: TIMING must be <=60.'
END//

【讨论】:

  • 信号在 mysql 5.0 中不支持
  • 我的过程不太好,所以你能写一个存储过程的例子来展示这个例子,因为我也尝试过使用过程但根本不起作用
猜你喜欢
  • 2022-07-21
  • 1970-01-01
  • 2013-02-11
  • 2021-12-31
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
相关资源
最近更新 更多