当前位置: 首页 > 面试题库 >

MySQL:无法在触发器中使用SIGNAL

子车劲
2023-03-14
问题内容

我正在尝试使用MySQL触发器生成错误消息。下面是我的代码:

DELIMITER $$
CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `Initial_Fees`
FOR EACH ROW
BEGIN
    IF ((SELECT Activation from Portfolio WHERE idPortfolio = New.idPortfolio)=false) THEN
        SIGNAL SQLSTATE '45000';
        SET MESSAGE_TEXT := 'Disabled Thing';
    END IF;
END$$   
DELIMITER ;

但这总是会产生错误。我不知道错误是什么,因为它没有说任何有关错误的信息,而只是“错误”。

有什么建议吗?除此之外,有人说使用SIGNAL存在问题,因为它可能取决于MySQL版本。有什么建议吗?


问题答案:

set message_text子句是信号语法的一部分-它们之间不应存在分号(;)。此外,它使用=运算符,而不是:=

DELIMITER $$
CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `Initial_Fees`
FOR EACH ROW
BEGIN
    IF ((SELECT Activation from Portfolio WHERE idPortfolio = New.idPortfolio)=false) THEN
        SIGNAL SQLSTATE '45000' -- Note: no semicolon
        SET MESSAGE_TEXT = 'Disabled Thing'; -- Note the = operator
    END IF;
END$$   
DELIMITER ;


 类似资料:
  • 本文向大家介绍MySQL触发器使用详解,包括了MySQL触发器使用详解的使用技巧和注意事项,需要的朋友参考一下 MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: 其中: trigger_name:标识触发器名称,用户自行指定; trigger_t

  • 本文向大家介绍Oracle使用触发器和mysql中使用触发器的案例比较,包括了Oracle使用触发器和mysql中使用触发器的案例比较的使用技巧和注意事项,需要的朋友参考一下 一、触发器   1.触发器在数据库里以独立的对象存储,   2.触发器不需要调用,它由一个事件来触发运行   3.触发器不能接收参数   --触发器的应用     举个例子:校内网、开心网、facebook,当你发一个日志,

  • 问题内容: 我有一个顾客。 当将新行添加到此客户表时,如果新行的(主键)已经在客户表中,则我想使用其他字段对现有(旧)行进行更新。()。 否则(如果不在表中)插入新行。我知道我可以使用触发器在mssql中做到这一点。有没有一种方法可以在mysql中做到这一点。 问题答案: MySQL没有触发器,但是它具有REPLACE和INSERT … ON DUPLICATE KEY UPDATE (请参阅文档

  • 我试图在插入后创建一个触发器,它将更新另一个表。 这是我尝试的代码: 但我会收到以下错误消息: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“@qte AS integer”附近的正确语法;声明@code为整数;从INSERTED中选择@QTE=qteInv;%s“位于第4行

  • 我知道这是非常不受赞扬的, 我知道这是一个性能、速度等方面的问题,但这是一个集成问题,他们只通过mysql进行更新(我知道这样做也很疯狂,但我无法改变他们所做的,他们正在进行大量的销售,所以他们不想改变任何事情)。 我只需要发布到一个URL(它可以像http://www.google.com?id=skuid) 我读了这个博客和堆栈,但他们是2岁,想知道是否有替代使用udf: http://ope

  • 问题内容: 有人告诉我,我需要在触发器中使用定界符。我正在查看MySQL手册页,并在示例中找到了它。但是,它不在通用文档中。 这是我要纠正的代码: 老实说,我不知道如何执行此操作,并且http://dev.mysql.com/doc/refman/5.5/en/create- trigger.html上 的文档似乎是一个非常不足的参考。例如,当阅读“ ”和“ ”时,它引用“ ”-与触发器关联的表。