这两天在思考怎么生成数据库随机名称,思前想后觉得还是利用自增的逻辑主键是最方便快捷的,于是便尝试着获取一种自增的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这个表(在同一语句中)。

最新文章

  1. jieba中文分词(python)
  2. Spring XML配置文件示例(一)——&lt;Servlet name&gt;-servlet.xml
  3. Action接收页面传来的参数方法
  4. Java数字处理
  5. DNN 错误代码 0x80070005 解决方案
  6. 为什么手机连接wifi会显示已停用?
  7. FVANCOP/ChartNew.js
  8. 【Ubuntu16.04】 install nginx
  9. 引入js文件,ajax不执行操作
  10. [SinGuLaRiTy] NOIP模拟题 by liu_runda
  11. 洛谷P3381 - 【模板】最小费用最大流
  12. 第10章 使用密码保护API - Identity Server 4 中文文档(v1.0.0)
  13. C# 动态生成word文档
  14. hdu 5877 Weak Pair (Treap)
  15. 十图详解tensorflow数据读取机制(附代码)转知乎
  16. ES系列七、ES-倒排索引详解
  17. Linux服务器---邮件服务postfix安装
  18. 如何从dvi生成pdf--------亲测有效果.
  19. BZOJ2435:[NOI2011]道路修建 (差分)
  20. 2017ACM暑期多校联合训练 - Team 7 1002 HDU 6121 Build a tree (深搜+思维)

热门文章

  1. day40 css高级选择器
  2. Ajax 异步请求返回集合遍历问题
  3. Vision GUI programming products
  4. MySQL 数据类型对比:char 与 varchar;varchar 与 text;datetime 与 timestamp;blob 与 text;
  5. Visual Studio Code 使用
  6. bzoj 4349 最小树形图——朱刘算法
  7. C# 装箱
  8. MapReduce案例:统计共同好友+订单表多表合并+求每个订单中最贵的商品
  9. SourceInsight宏插件1(非常好用,强力推荐)
  10. MS DSVM、DLVM