MySQL 5.0的Sequence的实现

本文介绍了一种在MySQL 5.0中实现自增序列的方法,通过创建存储过程和函数实现类似Sequence的功能,可用于自动为表中的某列分配唯一递增ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL5.0里面没有Sequence很不方便,于是……

create table t_sequence(
id int,
seed int,
primary key (id)
);


create function f_seqnext()
returns int
begin
declare oi int;
update t_sequence set seed = seed + 1;
select seed into oi from t_sequence;
return oi;
end;


create function f_seqlast()
returns int
begin
declare oi int;
select seed into oi from t_sequence limit 1;
return oi;
end;


create function f_seqreset()
returns int
begin
update t_sequence set seed = 0;
return 0;
end;
 那么如何调用呢。
比如我们要给某个表的每一行,在某个列上面编号,1,2,3,4,5...
update
t_goods set m_id = f_seqnext()

通过调用 f_seqreset() 来降这个sequence归零
F:\vue3new\Ch-08\shop-backend>npm start > shop-backend@1.0.0 start > node development.js [2025-06-01T12:06:07.254] [34872] [INFO] - Server running at http://127.0.0.1:8360 [2025-06-01T12:07:45.601] [34872] [INFO] - ThinkJS version: 3.2.15 [2025-06-01T12:07:45.602] [34872] [INFO] - Environment: development [2025-06-01T12:07:45.602] [34872] [INFO] - Workers: 1 [2025-06-01T12:07:57.318] [30344] [INFO] - mysql://root:123456@127.0.0.1:3306/vueshop Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence._packetToError (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Handshake.ErrorPacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) at Protocol._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:88:28) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:526:10) at Socket.emit (node:events:507:28) at addChunk (node:internal/streams/readable:559:12) -------------------- at Protocol._enqueue (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:144:48) at Protocol.handshake (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:51:23) at PoolConnection.connect (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:116:18) at Pool.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Pool.js:48:16) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:83:10 at new Promise (<anonymous>) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:82:12 at ThinkMysql.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:89:69) at F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:229:21 at F:\vue3new\Ch-08\shop-backend\node_modules\think-debounce\index.js:19:16 { code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', fatal: true } { request: { method: 'GET', url: '/', header: { host: '127.0.0.1:8360', connection: 'keep-alive', 'sec-ch-ua': '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'sec-fetch-user': '?1', 'sec-fetch-dest': 'document', 'accept-encoding': 'gzip, deflate, br, zstd', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' } }, response: { status: 200, message: 'OK', header: [Object: null prototype] { 'x-powered-by': 'thinkjs-3.2.15' } }, app: { subdomainOffset: 2, proxy: false, env: 'development' }, originalUrl: '/', req: '<original node req>', res: '<original node res>', socket: '<original node socket>' } [2025-06-01T12:07:57.335] [30344] [INFO] - GET / 500 680ms [2025-06-01T12:07:57.533] [30344] [INFO] - GET /favicon.ico 404 2ms Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence._packetToError (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Handshake.ErrorPacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) at Protocol._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:88:28) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:526:10) at Socket.emit (node:events:507:28) at addChunk (node:internal/streams/readable:559:12) -------------------- at Protocol._enqueue (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:144:48) at Protocol.handshake (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:51:23) at PoolConnection.connect (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:116:18) at Pool.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Pool.js:48:16) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:83:10 at new Promise (<anonymous>) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:82:12 at ThinkMysql.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:89:69) at F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:229:21 at F:\vue3new\Ch-08\shop-backend\node_modules\think-debounce\index.js:19:16 { code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', fatal: true } { request: { method: 'GET', url: '/', header: { host: '127.0.0.1:8360', connection: 'keep-alive', 'cache-control': 'max-age=0', 'sec-ch-ua': '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'sec-fetch-user': '?1', 'sec-fetch-dest': 'document', 'accept-encoding': 'gzip, deflate, br, zstd', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' } }, response: { status: 200, message: 'OK', header: [Object: null prototype] { 'x-powered-by': 'thinkjs-3.2.15' } }, app: { subdomainOffset: 2, proxy: false, env: 'development' }, originalUrl: '/', req: '<original node req>', res: '<original node res>', socket: '<original node socket>' } [2025-06-01T12:08:21.584] [30344] [INFO] - GET / 500 12ms Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence._packetToError (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Handshake.ErrorPacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) at Protocol._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:88:28) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:526:10) at Socket.emit (node:events:507:28) at addChunk (node:internal/streams/readable:559:12) -------------------- at Protocol._enqueue (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:144:48) at Protocol.handshake (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:51:23) at PoolConnection.connect (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:116:18) at Pool.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Pool.js:48:16) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:83:10 at new Promise (<anonymous>) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:82:12 at ThinkMysql.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:89:69) at F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:229:21 at F:\vue3new\Ch-08\shop-backend\node_modules\think-debounce\index.js:19:16 { code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', fatal: true } { request: { method: 'GET', url: '/', header: { host: '127.0.0.1:8360', connection: 'keep-alive', 'cache-control': 'max-age=0', 'sec-ch-ua': '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'sec-fetch-user': '?1', 'sec-fetch-dest': 'document', 'accept-encoding': 'gzip, deflate, br, zstd', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' } }, response: { status: 200, message: 'OK', header: [Object: null prototype] { 'x-powered-by': 'thinkjs-3.2.15' } }, app: { subdomainOffset: 2, proxy: false, env: 'development' }, originalUrl: '/', req: '<original node req>', res: '<original node res>', socket: '<original node socket>' } [2025-06-01T12:08:22.177] [30344] [INFO] - GET / 500 11ms Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence._packetToError (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Handshake.ErrorPacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) at Protocol._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:88:28) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:526:10) at Socket.emit (node:events:507:28) at addChunk (node:internal/streams/readable:559:12) -------------------- at Protocol._enqueue (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:144:48) at Protocol.handshake (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:51:23) at PoolConnection.connect (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:116:18) at Pool.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Pool.js:48:16) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:83:10 at new Promise (<anonymous>) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:82:12 at ThinkMysql.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:89:69) at F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:229:21 at F:\vue3new\Ch-08\shop-backend\node_modules\think-debounce\index.js:19:16 { code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', fatal: true } { request: { method: 'GET', url: '/', header: { host: '127.0.0.1:8360', connection: 'keep-alive', 'cache-control': 'max-age=0', 'sec-ch-ua': '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'sec-fetch-user': '?1', 'sec-fetch-dest': 'document', 'accept-encoding': 'gzip, deflate, br, zstd', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' } }, response: { status: 200, message: 'OK', header: [Object: null prototype] { 'x-powered-by': 'thinkjs-3.2.15' } }, app: { subdomainOffset: 2, proxy: false, env: 'development' }, originalUrl: '/', req: '<original node req>', res: '<original node res>', socket: '<original node socket>' } [2025-06-01T12:12:46.861] [30344] [INFO] - GET / 500 7ms Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence._packetToError (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Handshake.ErrorPacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) at Protocol._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:88:28) at Socket.<anonymous> (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:526:10) at Socket.emit (node:events:507:28) at addChunk (node:internal/streams/readable:559:12) -------------------- at Protocol._enqueue (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:144:48) at Protocol.handshake (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\protocol\Protocol.js:51:23) at PoolConnection.connect (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Connection.js:116:18) at Pool.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\mysql\lib\Pool.js:48:16) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:83:10 at new Promise (<anonymous>) at F:\vue3new\Ch-08\shop-backend\node_modules\think-helper\index.js:82:12 at ThinkMysql.getConnection (F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:89:69) at F:\vue3new\Ch-08\shop-backend\node_modules\think-mysql\index.js:229:21 at F:\vue3new\Ch-08\shop-backend\node_modules\think-debounce\index.js:19:16 { code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', fatal: true } { request: { method: 'GET', url: '/', header: { host: '127.0.0.1:8360', connection: 'keep-alive', 'cache-control': 'max-age=0', 'sec-ch-ua': '"Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'sec-fetch-user': '?1', 'sec-fetch-dest': 'document', 'accept-encoding': 'gzip, deflate, br, zstd', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' } }, response: { status: 200, message: 'OK', header: [Object: null prototype] { 'x-powered-by': 'thinkjs-3.2.15' } }, app: { subdomainOffset: 2, proxy: false, env: 'development' }, originalUrl: '/', req: '<original node req>', res: '<original node res>', socket: '<original node socket>' } [2025-06-01T12:12:47.470] [30344] [INFO] - GET / 500 9ms
06-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值