首页 > 数据库 >MYSQL给ID设置默认值为UUID

MYSQL给ID设置默认值为UUID

时间:2022-11-10 23:33:06浏览次数:71  
标签:触发 触发器 UUID ID 默认值 id

MYSQL给ID设置默认值为UUID

标签: mysql  id  触发器  默认值

  <iframe data-google-container-id="2" data-load-complete="true" frameborder="0" height="90" id="google_ads_iframe_/147246189,22316101559/freesion.com_750x336_1_desktop_0" marginheight="0" marginwidth="0" name="google_ads_iframe_/147246189,22316101559/freesion.com_750x336_1_desktop_0" scrolling="no" title="3rd party ad content" width="728"></iframe>

          由于mysql并不支持默认值为函数类型,给id设值有两种方式:(1)通过后台在执行插入语句之前,给id设置为UUID (2)在数据库中通过触发器给id设置默认值为UUID。第(1)方式比较简单,这里就不多说了,主要讲讲通过触发器来实现的过程。

1.怎样创建触发器

  1.   create trigger 触发器的名称
  2.   触发时机 触发事件 on 要建立触发器的表名
  3.   for each ROW
  4.   BEGIN
  5.   触发器要实现的逻辑
  6.   END

(1)触发时机,表示在事件触发前执行还是触发后执行,所以有两个可选值,before和after

(2)触发事件,也就是说,什么情况下,这个触发器才会执行,可以是在插入数据的时候insert,或者是在更新数据的时候update,或者是在删除数据的时候delete,一共是3种触发时机

 

2.通过触发器给id设置默认值为UUID

  1.   create trigger id_trigger
  2.   before insert on t_student_course
  3.   for each ROW
  4.   BEGIN
  5.   SET new.ID=REPLACE(UUID(),'-','');
  6.   END

简单解释一下:

(1)id_trigger就是触发器的名字

(2)before就是触发时机,表示每次插入新数据之前执行触发器

(3)insert就是触发事件,表示插入数据的时候触发

(4)t_student_course就是要建立触发器的表名

(5)SET new.ID=REPLACE(UUID(),'-','');就是触发器实现的逻辑功能,也就是给id设置默认值为UUID,这里的new,代表即将插入的数据。这里其实可以写一些判断,什么情况下执行什么之类的。

3.效果

可以看到,在表t_student_course中,已经建立了触发器,下面新增一条记录测试一下:

我测试是可以的,有兴趣的可以自己测试一下。

 

标签:触发,触发器,UUID,ID,默认值,id
From: https://www.cnblogs.com/sexintercourse/p/16879218.html

相关文章

  • AndroidManifest.xml文件--权限设置
    在AndroidManifest.xml中设置访问网络<uses-permissionandroid:name="android.permission.INTERNET"/>存储SD卡<uses-permissionandroid:name="android.permi......
  • 解决IDEA快速构建Maven工程报错:No archetype found in remote catalog. Defaulting to
    错误警告如下:Noarchetypefoundinremotecatalog.Defaultingtointernalcatalog;翻译的意思:在远程目录中找不到原型。默认为内部目录解决办法1:可以不用管【因......
  • uuid
    Forthecreationof RFC4122 UUIDsComplete -SupportforRFC4122version1,3,4,and5UUIDsCross-platform -Supportfor...CommonJS, ECMAScriptMo......
  • Android Study 之通过DialogFragment玩转高仿IOS弹框~ ^.^
    LZ-Say:在努力向前奔跑的途中,不要忘记让自己始终保持一个良好的状态,一颗初心,一颗永不言弃的心,一起加油`前言LZ虽说是搞Android的,但是对IOS的风格样式甚是酷爱,感觉简约大方,而......
  • 源码路 之 聊聊 Button 默认值引发的坑坑
    LZ-Says:enmmm,希望所有的一切都将会有一个好的结果。虽然菜比一个,但是只要努力了,就会有好的结果~!!!前言Enmmm,今天突然奇想,玩玩shape文件。Enmmm,我想的挺美好的。结果,mmp了。......
  • 工具篇 之 Android WIFI ADB 实战
    LZ-Says:累哇哇。。。前言enmmm,新工作,新起点,新开始。。。今天忘记拿usb线,想着怎么破?enmmm,想了想,突然想到有个WIFIADB,遂,开始一波实战~~~实践直接插件里搜索,AndroidWIFI......
  • 简记Ubuntu在安装NVIDIA驱动后黑屏无法启动进入图形桌面的一种可能原因
    前几日考虑给ubuntu安装图形桌面驱动。第一次安装是在图形界面下启动终端软件跑的NVIDIA给的安装脚本,结果它跑了一半自动重启了图形界面,导致脚本被退出了。测试发现显卡确......
  • Android开发Compose版本、Kotlin 版本、KSP版本版本对应关系
    Android开发Compose版本、Kotlin版本、KSP版本版本对应关系是要遵循官方给出的,不然容易出锅甚至编译都不过,即使编译通过也可能导致潜在崩溃ComposeCompiler版本和兼......
  • 探究Android中的注解
    本文系GDGAndroidMeetup分享内容总结文章注解是我们经常接触的技术,Java有注解,Android也有注解,本文将试图介绍Android中的注解,以及ButterKnife和Otto这些基于注解的库......
  • 一些快速提高Android开发的脚本与技巧(终端篇)
    正所谓“工欲善其事必先利其器”,一个好的工具或者技巧能让提升工作效率,起到事半功倍的效果。在这里斗胆列出一些窃以为一些可能快速提高Android日常开发的脚本,希望可以为大......