我不是数据库方面的专家,在进行数据库项目时我需要帮助。我使用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不能借超过10本书';第5行的SIGNAL S'
谢谢你的帮助!
答案 0 :(得分:1)
尝试将Counted
定义为变量:
BEGIN
DECLARE msg varchar(255);
IF 10 <= (select count(*) from borrowed where rDateTime is NULL) THEN
SET msg = 'Reader cannot borrow more than 10 books';
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT=msg;
END IF;
END;
请注意,我还将= NULL
更改为is NULL
,这是进行NULL
比较的正确方法。