我是 MySQL 功能领域的新手,但我似乎无法让它正常工作。基本上,每次我从这个特定的表运行 SELECT 查询时,都应该显示下一个递增的值。
这是我的桌子:
CREATE TABLE testdb.id_generator(
invoice_id INT(11) NOT NULL,
PRIMARY KEY (invoice_id)
)
ENGINE = INNODB
AVG_ROW_LENGTH = 16384
CHARACTER SET latin1
COLLATE latin1_swedish_ci;
这是功能:
CREATE
FUNCTION testdb.f_id_test()
RETURNS INT(11)
BEGIN
DECLARE v_val INT;
DECLARE c_select CURSOR FOR SELECT invoice_id
FROM
id_generator;
OPEN c_select;
FETCH c_select INTO v_val;
CLOSE c_select;
UPDATE id_generator
SET
invoice_id = invoice_id + 1;
RETURN v_val;
END
每当我尝试运行查询
SELECT f_id_test()
FROM
id_generator
它说“无法更新存储函数/触发器中的表'id_generator',因为它已被调用此存储函数/触发器的语句使用。” 我在这里做错了什么?