对于快速和简单的回答:您不能显示来自触发器的消息。您只能抛出错误。
根据您的问题,您可能不知道您在数据库中使用触发器的原因。我们都通过了那个级别,所以不要担心。当我们使用触发器时,您已经了解了语法,但不了解它们可以做什么以及不能做什么。
触发器将(对于您的情况在UPDATE之前)与数据库有关,仅此而已。这意味着触发器无法在您的屏幕上显示任何消息。您只能处理数据库人员,并且并非所有操作都允许这样做,或者甚至不推荐某些操作!那是理论部分。
现在给你解决你的问题。
您唯一能做的就是知道触发器何时起作用(即当 new.qua<50 时)或基本上检查任何其他触发器的任何内容如下。(只是一个小的快速解决方案):
- 您需要创建一个表来处理触发器的所有日志记录。
- 在其中添加一个 ID 字段,一个将保存 triggerex 操作的描述字段。BefUpdate、BefInsert 等的另一个字段可能触发了日志记录和其他您希望稍后在应用程序中显示的条件。
- 然后在 if 条件中,您使用 write 和 insert 语句来填充新(日志记录)表中的信息。
- 稍后在您的应用程序中选择该日志记录表以查看消息。
这是一种有用且快速的记录方式,不仅可以记录触发器,还可以记录函数(存储过程)。Judt 供参考,我为您提供了带有 CREATE 的示例代码,以及您的触发器的 INSERT 语句。
CREATE TABLE LOGGER (
ID BIGINT PRIMARY KEY AUTO_INCREMENT,
DESCR_ACTIVITY VARCHAR(10),
ACTIVITY VARCHAR(50),
DT TIMESTAMP,
CONDITIONVALUE VARCHAR(50)
)
现在在您的代码的 IF 中将其设置为:
if new.qty < 50 then
INSERT INTO LOGGER VALUES ('BEFINS','CHECKING QUA',NULL,'QUANTITY IS LOWER THAN 50')
end if;
即使从工作台或您的应用程序中,您也可以:
SELECT * FROM LOGGER
查看日志。
但是,如果我对阅读感到困惑并且您只想抛出错误,您可以阅读有关抛出错误的 Mysql 文档:
在此处输入链接描述
你可以做的是在你的 if 条件下写下类似的东西:
if new.qty < 50 then
SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'Lower than 50', MYSQL_ERRNO = 1000;
endif;
你不应该做的是改变分配了触发器的同一张表,并且只使用触发器中不太复杂的代码的一小部分。
希望我能有所帮助。