mysql实现自增函数
2024-08-26 01:43:10
这两天在思考怎么生成数据库随机名称,思前想后觉得还是利用自增的逻辑主键是最方便快捷的,于是便尝试着获取一种自增的mysql函数
自增mysql函数
BEGIN
DECLARE id INT DEFAULT ;
SELECT cuid + INTO id from uc_gen_number where table_key = tableKey for update;
IF id = THEN
SET id = ;
INSERT INTO uc_gen_number (table_key, cuid) VALUES (tableKey, id);
ELSE UPDATE uc_gen_number SET cuid = id where table_key = tableKey;
END IF;
RETURN id;
END
查资料的时候看到了这个函数,觉得真的是刷新了我的三观,之前一直认为select出的结果集是不能够赋值给其他的,因为考虑毕竟是一个集合,但是今天发现却可以,只要保证结果集只有一条。
自己尝试着验证了这个原理:
update User set FSerialID=(select FSerialId from (select FSerialId from User ORDER BY FSerialId desc limit ) a) where FSerialId=(select FSerialId from (select FSerialId from User ORDER BY FSerialId asc limit 1) b)
没想到真的可以。如果把select FSerialId from (select FSerialId from UserInfo ORDER BY FSerialId desc limit 1) a 这句直接改成select FSerialId from UserInfo ORDER BY FSerialId desc limit 1。会报错You can't specify target table <tbl> for update in FROM clause.错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
最新文章
- jieba中文分词(python)
- Spring XML配置文件示例(一)——<;Servlet name>;-servlet.xml
- Action接收页面传来的参数方法
- Java数字处理
- DNN 错误代码 0x80070005 解决方案
- 为什么手机连接wifi会显示已停用?
- FVANCOP/ChartNew.js
- 【Ubuntu16.04】 install nginx
- 引入js文件,ajax不执行操作
- [SinGuLaRiTy] NOIP模拟题 by liu_runda
- 洛谷P3381 - 【模板】最小费用最大流
- 第10章 使用密码保护API - Identity Server 4 中文文档(v1.0.0)
- C# 动态生成word文档
- hdu 5877 Weak Pair (Treap)
- 十图详解tensorflow数据读取机制(附代码)转知乎
- ES系列七、ES-倒排索引详解
- Linux服务器---邮件服务postfix安装
- 如何从dvi生成pdf--------亲测有效果.
- BZOJ2435:[NOI2011]道路修建 (差分)
- 2017ACM暑期多校联合训练 - Team 7 1002 HDU 6121 Build a tree (深搜+思维)