MYSQL给ID设置默认值为UUID
<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.怎样创建触发器
- create trigger 触发器的名称
- 触发时机 触发事件 on 要建立触发器的表名
- for each ROW
- BEGIN
- 触发器要实现的逻辑
- END
(1)触发时机,表示在事件触发前执行还是触发后执行,所以有两个可选值,before和after
(2)触发事件,也就是说,什么情况下,这个触发器才会执行,可以是在插入数据的时候insert,或者是在更新数据的时候update,或者是在删除数据的时候delete,一共是3种触发时机
2.通过触发器给id设置默认值为UUID
- create trigger id_trigger
- before insert on t_student_course
- for each ROW
- BEGIN
- SET new.ID=REPLACE(UUID(),'-','');
- 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