【问题标题】:stored procedure and triggers in mysqlmysql中的存储过程和触发器
【发布时间】:2013-12-19 12:43:07
【问题描述】:

我正在尝试运行一个将数据插入到表中的存储过程。在表中,添加后有一个触发器会更新序列表(MySQL DB中没有序列)

这是我的存储过程:

DELIMITER $$

CREATE DEFINER=`dbName`@`%` PROCEDURE `insertGuide`(m_name varchar(45)  ,m_last varchar(45) ,addres varchar(45) ,mphone int)
BEGIN

INSERT INTO `guides` (`id`, `name`, `lastName`, `address`, `phone`)
select max(id)+1, m_name, m_last, addres, mphone
from seq;

END

这是我的触发器:

USE `dbName`;
DELIMITER $$

CREATE DEFINER=`dbName`@`%` TRIGGER 
    guidesUpdate
AFTER INSERT ON
    guides
FOR EACH ROW
    BEGIN
        INSERT INTO seq VALUES ();
    END

当我跑步时

call insertGuide('a'  ,'aa' ,'aaa' ,'12333')

它返回一个错误:

错误代码:1442。无法更新存储函数/触发器中的表 'seq' 因为它已被调用此存储的语句使用 函数/触发器。

我可以做点什么吗?

【问题讨论】:

    标签: mysql sql stored-procedures triggers sequence


    【解决方案1】:

    您能做的最好的事情就是完全消除这个触发器。如果你想在一个表上有一个自动递增的 id,那么只需在 create table 语句中定义它:

    create table guides as (
        id int not null auto_increment primary key,
        . . .
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 2011-05-02
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多