【发布时间】:2014-06-28 13:55:08
【问题描述】:
我不是数据库专家,我在做数据库项目时需要帮助。我使用 phpmyadmin 4.1.14 版作为我的数据库服务器。我需要有一个约束,以确保读者不能从图书馆借到 10 本书以上。我正在尝试设置一个触发器,该触发器将在更新 BORROWED 表之前运行,以确保读者没有借阅超过 10 本书。如果读者已经借了 10 本书,我想显示一条消息。
我无法让它工作,因为我不断收到错误。这是我的触发器 SQL
BEGIN
DECLARE msg varchar(255);
SELECT Count(ReaderID) as Counted from BORROWED
WHERE RDateTime=null
IF Counted=10 THEN
SET msg='Reader cannot borrow more than 10 books';
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT=msg;
END IF;
END
这是我收到的错误消息。 MySQL 说:#1064 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解您在 'IF Counted=10 THEN SET msq='REader cannot borrow more than 10 books' 附近使用的正确语法;第 5 行的 SIGNAL S'
感谢您的帮助!
【问题讨论】:
-
您的示例查询中没有任何内容与“ID Counted ...”匹配。请发布生成消息的实际触发器。不过,作为提示,
as Counted不会在任何地方设置任何变量。 -
对不起,我在输入问题时打错了字。它不是“ID Counted”,应该是“IF Counted”。我的坏
标签: mysql sql database triggers phpmyadmin