这里使用触发程序实现此功能.

触发程序语法如下:

Create trigger

{before|after}

{insert|update|delete}

On

For each row

核心代码:

use t14test

show tables

drop table if exists uuidTest

create table uuidTest(

testId VARCHAR() not NULL DEFAULT '',

testData VARCHAR(),

PRIMARY KEY(`testId`)

)

/*创建触发器*/

/*

* terminal创建存储过程需要定义分隔符

* delimiter //

* */

create trigger tri_auto_uuid

before insert

on uuidTest

for each ROW

BEGIN

if new.testId = '' THEN set new.testId = (select uuid());

end if;

END

/*删除触发器*/

drop trigger if exists tri_auto_uuid

/*插入数据*/

insert into uuidTest(testData)VALUES('一条数据')

select * from uuidTest

运行了三次插入操作,结果如下:

使用触发器可实现uuid作为主键.

有问题的代码:

create trigger tri_auto_uuid

after insert

on uuidTest

for each ROW

update uuidTest set testId=((select uuid()))

如果这样定义触发程序,看似没问题,也能添加成功,但是录入数据会报错.

Can't update table 'tb_user' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

网上说为了避免递归触发,update一条数据后不能触发对该数据进行除了Set之外的更新操作.否则就会报错.

可是我这个触发器是after insert 而且是Set 操作,为什么会有问题呢?

这里存在某种原因,可能和递归触发有关系.暂且不去管他底层是如何运作的.只需要改变一下思路,把after insert 改成 before insert 就行了.

为什么分布式数据库中不使用uuid作为主键?

分布式数据库当然也有主键的需求,但是为什么不直接使用uuid作为主键呢?作为曾经被这个问题困惑过的人,试着回答一下 1. UUID生成速率低下 Java的UUID依赖于SecureRandom.nex ...

MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)

测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿 ...

MySQL 使用自增ID主键和UUID 作为主键的优劣比較具体过程(从百万到千万表记录測试)

主键类型 SQL语句 运行时间 (秒)   (1)模糊范围查询1000条数据,自增ID性能要好于UUID 自增ID SELECT SQL_NO_CACHE t.* FROM test.`UC_US ...

【Python】Django Model 怎么使用 UUID 作为主键?

>>> import uuidprint uuid.uuid3(uuid.uuid1(), 'python.org') >>> # make a UUID base ...

深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

前言:在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建 ...

使用有序GUID:提升其在各数据库中作为主键时的性能

原文出处:https://www.codeproject.com/articles/388157/guids-as-fast-primary-keys-under-multiple-database  ...

MySQL的几个概念:主键,外键,索引,唯一索引

概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...

为什么要使用自增ID作为主键

1.从业务上来说 在设计数据库时不需要费尽心思去考虑设置哪个字段为主键.然后是这些字段只是理论上是唯一的,例如使用图书编号为主键,这个图书编号只是理论上来说是唯一的,但实践中可能会出现重复的 情况.所 ...

MySQL中myisam和innodb的主键索引有什么区别?

MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索 ...

随机推荐

UNIX 逐字符输入

//终端驱动处于普通胡一次一字符模式 system("stty raw"); //终端驱动处于普通胡一次一行模式 system("stty cooked");

主流数据库字段类型转.Net类型的方法

最近在阅读一些开源的代码,发现其中有些方法总结的很全面,至少在我做同样的事情时候,需要抓破脑袋想活着google,现在看到了这个关于主流数据库字段类型转.Net类型的方法,故收藏之,也顺便分享给那些能 ...

UITableViewCell性能优化

5.UITableViewCell性能优化 > 定义一个循环利用标识 static NSString *ID = @"C1"; > 从缓存池中取出可循环利用的cell ...

Linux内核态抢占机制分析(转)

Linux内核态抢占机制分析  http://blog.sina.com.cn/s/blog_502c8cc401012pxj.html 摘 要]本文首先介绍非抢占式内核(Non-Preemptive ...

IP地址和MAC地址的关系

IP地址是网络层的概念,而MAC地址是数据链路层的概念.IP地址在网络层上对不同的硬件地址类型进行了统一,从而提供网络互联的可能:而硬件地址在真正的数据传输中要用到.当应用程序把数据从源主机发送到目标 ...

php7安装php-redis扩展

注:操作系统10.13.3 版本,其他版本的Mac系统应该也是可以的 先安装 按照顺序在命令行执行下面命令,如果当前用户权限不够的话,执行命令加上 sudo cd /usr/local/Cellar ...

Matting任务里的Gradient与Connectivity指标

Matting任务里的Gradient与Connectivity指标 主要背景 Matting任务就是把α(不透明度, 也就是像素属于前景的概率).F(前景色)和B(背景色)三个变量给解出来. C为图 ...

C#通过COM组件操作IE浏览器(四):实用代码总结

//执行js方法 IHTMLWindow2 win = oDocument2.parentWindow; win.execScript("functiona();", " ...

最小表示法模板(洛谷P1368 工艺)(最小表示法)

洛谷题目传送门 最小表示是指一个字符串通过循环位移变换(第一个移到最后一个)所能得到的字典序最小的字符串. 因为是环状的,所以肯定要先转化为序列,把原串倍长. 设决策点为一个表示法的开头.比较两个决策 ...

s11 Docker+DevOps实战--过程和工具

开发人员本地提交代码,本地使用容器模拟生产环境测试,测试通过提交到git master 分支,就会触发pipeline执行集成构建.集成工具: gitlab-vi,travis,或Jenkins.自动 ...

mysql 自动维护uuid_MySQL实现自动使用uuid作为主键以及解决不能调用触发器的一点思路...相关推荐

  1. 【踩坑记录】mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错

    [踩坑记录]mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错 报错记录 解决方案 推荐方案 使用uuid作为主键,修改id的类型为bigint ...

  2. 生成UUID作为主键

    用UUID作为主键真的很方便,几乎不可能出现重复情况.代码如下: public static String getUUID(){ String s=UUID.randomUUID().toString ...

  3. MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)...

    Reference: https://blog.csdn.net/mchdba/article/details/52336203 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不 ...

  4. MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(500W单表)

    测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了说 ...

  5. MySQL 使用自增ID主键和UUID 作为主键的优劣比較具体过程(从百万到千万表记录測试)...

    測试缘由 一个开发同事做了一个框架.里面主键是uuid.我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿 ...

  6. MySQL面试:为什么用自增列作为主键

    1.如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引. 如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引. 如果也没有这样的 ...

  7. mysql 主从,主主,主主复制时的主键冲突解决

    原理:slave 的i/o thread ,不断的去master抓取 bin_log, 写入到本地relay_log 然后sql thread不断的更新slave的数据 把主服务器所有的数据复制给从服 ...

  8. MySQL不建议使用UUID作为主键的原因

    前言 以前只知道UUID不适合作为主键,但是不知道具体原因,最近做了了解,在此做一个记录 索引 我们先了解一下mysql索引的数据结构,mysql在innodb的存储引擎下是使用B+树来做为索引的数据 ...

  9. Java开发环境!为什么MySQL不推荐使用uuid作为主键

    目录 由于文档内容过多,共计有500页,因此为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的可以在文末获取! 部分内容展示 深入浅出索引(上) 索引的常见模型 InnoDB 的索引 ...

最新文章

  1. LTE之MIMO学习1-TB/codeword/layer/precoding/port
  2. 安装mysql.dox_linux虚拟机上装mysql数据库-Go语言中文社区
  3. QTP的那些事--调用外部的文件的方法
  4. 积跬步,聚小流------Bootstrap学习记录(3)
  5. php artisan 命令
  6. C语言 const 修饰函数返回值 - C语言零基础入门教程
  7. 【英语学习】【English L06】U01 Breakfast L6 Make at home vs. eat out
  8. 20171026_Python学习第二周四次课
  9. zz推荐的软件测试英文网站
  10. JavaScript内建对象
  11. loaded question解释
  12. css字体图标的使用
  13. 桌面上的计算机图标是一个,电脑桌面上计算机图标不见如何找回
  14. 2021龙川隆师中学高考成绩查询入口,2021年河源中考成绩和分数线什么时候公布(附查询入口)...
  15. H5 - 实现半颗星评分功能
  16. R语言 dataframe 取指定行列filter 随机取数
  17. 十分详细的阳光十六法则 (转)
  18. JAVA GUI(图形用户界面)
  19. SolidWork的使用技巧总结
  20. 目前最新最全的xp操作系统大全

热门文章

  1. 如何用 Python 写 Excel 中 Vlookup 函数?
  2. 英特尔加入 GPU 战局,终用上 6nm 工艺?
  3. 数据爆炸时代,云存储在“破圈”!
  4. Nutanix推出云基础架构远程管理IT解决方案
  5. 优秀的程序员真的不写注释吗? | 原力计划
  6. 对话 SmartX:领跑超融合中高端市场之道——用专注加专业构筑企业云基础
  7. 畅销款黑莓应用是怎样构建的?
  8. 详解 TypyScript 的一个怪异行为
  9. Serverless 会终结 Kubernetes 吗?
  10. 面试大厂被怼!这都搞不定,你只能做“搬运工”!