我正在尝试运行一个将数据插入表的存储过程。在表中,添加后会有一个触发器会更新序列表(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' 因为它已被调用此存储的语句使用 功能/触发。
我能为此做些什么吗?
答案 0 :(得分:0)
你能做的最好的事情就是完全消除这个触发器。如果你想在表上有一个自动递增的id,那么只需在create table
语句中定义它:
create table guides as (
id int not null auto_increment primary key,
. . .
);