gpt4 book ai didi

MySQL调用存储函数来生成唯一ID

转载 作者:行者123 更新时间:2023-11-29 08:38:17 25 4
gpt4 key购买 nike

我是 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',因为它已被调用此存储函数/触发器的语句使用。”我在这里做错了什么?

最佳答案

当您运行语句时,请尝试不使用“FROM id_generator”,本质上只是:

SELECT f_id_test()

您的函数已经从 id_generator 表中提取数据(因此 FROM 子句不会更改它),并且错误表明您的 SELECT 语句正在使用该函数尝试更新的同一个表。

关于MySQL调用存储函数来生成唯一ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com