私は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' を更新できません」と表示されます。ここで何が間違っていますか?