我在Maria DB中有以下代码,
我希望在查询中使用我的函数来创建一个以TABLE1的计数(*) +1开头的序列
它给出了创建序列查询中的一个错误:
CREATE FUNCTION myFuntion() RETURNS INT
BEGIN
DECLARE lastID INT DEFAULT 1;
SELECT COUNT(*) INTO lastID FROM TABLE1;
RETURN lastID+1;
END;
CREATE SEQUENCE seq101 START WITH myFuntion() INCREMENT BY 1 ;
错误:
MySqlError { ERROR 1064 (42000):您的SQL语法出现错误;请检查与MariaDB服务器版本对应的手册,以获得在“myFuntion()增量为1”附近使用的正确语法。
发布于 2023-02-13 09:43:56
计划切换到AUTO_INCREMENT
,也就是简单地将列更改为AUTO_INCREMENT
的ALTER TABLE
。它将自动执行MAX(id)+1
来启动。
使用SEQUENCE
的B计划:
CREATE
语句构造一个字符串,然后是PREPARE
和EXECUTE
。START TRANSACTION ... COMMIT
,单独的连接可以在可以之前获取"next“id。COUNT(*)+1
更改为MAX(id)+1
,以防ids中已经存在空白--由于DELETEs
或其他可能造成空白的操作。(如,INSERT IGNORE
.)https://dba.stackexchange.com/questions/323437
复制相似问题