mysql:我没有更新在触发器中定义触发器的表,但是我得到了类似的错误

mysql:我没有更新在触发器中定义触发器的表,但是我得到了类似的错误,mysql,sql,triggers,Mysql,Sql,Triggers,我有三张桌子。它们被称为书、读者、借阅 我的触发器的功能是:将借用记录插入借用表。但在插入之前,我们必须检查读者图书卡的状态和书籍的状态。只有当它们都正常时,我们才能将图书借给读者,即将图书表中的借阅图书状态更改为借阅,然后将借阅记录插入借阅表中。但是,更新book表时发生了一些错误 请看我的注释1,它向我报告了这样一个错误:[调用存储触发器的语句已经使用了存储触发器]。我知道MySQL的触发器不能修改定义的表,所以我认为这个错误非常令人费解。然后我创建了一个新的account表,并将注释2中标

我有三张桌子。它们被称为书、读者、借阅

我的触发器的功能是:将借用记录插入借用表。但在插入之前,我们必须检查读者图书卡的状态和书籍的状态。只有当它们都正常时,我们才能将图书借给读者,即将图书表中的借阅图书状态更改为借阅,然后将借阅记录插入借阅表中。但是,更新book表时发生了一些错误

请看我的注释1,它向我报告了这样一个错误:[调用存储触发器的语句已经使用了存储触发器]。我知道MySQL的触发器不能修改定义的表,所以我认为这个错误非常令人费解。然后我创建了一个新的account表,并将注释2中标记的句子添加到触发器中。它工作正常。所以这个错误真的把我弄糊涂了

如果你能帮助我,我将非常感激。以下是我的代码:

如果在\u insert\u borrow之前存在触发器,则丢弃触发器; 在插入之前创建触发器 每行 开始 宣布cst VARCHAR10; 宣布b_cts VARCHAR10; 从读卡器中选择卡片状态,其中读卡器编号=新建。读卡器编号进入cst; 从book_no=NEW.book_no进入B_cts的book中选择B_状态; 如果cst=损失,则 信号SQLSTATE'09000'设置消息_TEXT='您的卡丢失了……'; 否则b_cts=‘已检查’然后 SIGNAL SQLSTATE'09000'SET MESSAGE_TEXT='您想要的书已签出'; 如果结束; 更新书籍集B_状态=“已检查”,其中书籍编号=NEW.book编号;-1. 更新帐户集总计=总计+1000,其中id=1;-2. 终止 -测试数据 在新价值'001'册和'B17682'册中插入借阅编号;
提供:为所有表创建表;一些初始样本数据2-3行作为INSERT INTO,INSERT query present,但展开并添加一个查询,该查询将触发信号和最终数据状态,并进行解释。UPDATE account SET total=total+1000,其中id=1;也许=新。读不到,不是常数1?@Akina谢谢你的想法。因为这只是一个小作业,没有太多的表和数据,所以我重建了数据库,现在它正常工作了。