mysql給id設(shè)置默認(rèn)值為UUID的實(shí)現(xiàn)方法
由于mysql并不支持默認(rèn)值為函數(shù)類型,給id設(shè)值有兩種方式:(1)通過后臺(tái)在執(zhí)行插入語句之前,給id設(shè)置為UUID (2)在數(shù)據(jù)庫中通過觸發(fā)器給id設(shè)置默認(rèn)值為UUID。第(1)方式比較簡單,這里就不多說了,主要講講通過觸發(fā)器來實(shí)現(xiàn)的過程。
1.怎樣創(chuàng)建觸發(fā)器
create trigger 觸發(fā)器的名稱 觸發(fā)時(shí)機(jī) 觸發(fā)事件 on 要建立觸發(fā)器的表名 for each ROW BEGIN 觸發(fā)器要實(shí)現(xiàn)的邏輯 END
(1)觸發(fā)時(shí)機(jī),表示在事件觸發(fā)前執(zhí)行還是觸發(fā)后執(zhí)行,所以有兩個(gè)可選值,before和after
(2)觸發(fā)事件,也就是說,什么情況下,這個(gè)觸發(fā)器才會(huì)執(zhí)行,可以是在插入數(shù)據(jù)的時(shí)候insert,或者是在更新數(shù)據(jù)的時(shí)候update,或者是在刪除數(shù)據(jù)的時(shí)候delete,一共是3種觸發(fā)時(shí)機(jī)
2.通過觸發(fā)器給id設(shè)置默認(rèn)值為UUID
create trigger id_trigger before insert on t_student_course for each ROW BEGIN SET new.ID=REPLACE(UUID(),'-',''); END
簡單解釋一下:
(1)id_trigger就是觸發(fā)器的名字
(2)before就是觸發(fā)時(shí)機(jī),表示每次插入新數(shù)據(jù)之前執(zhí)行觸發(fā)器
(3)insert就是觸發(fā)事件,表示插入數(shù)據(jù)的時(shí)候觸發(fā)
(4)t_student_course就是要建立觸發(fā)器的表名
(5)SET new.ID=REPLACE(UUID(),'-','');就是觸發(fā)器實(shí)現(xiàn)的邏輯功能,也就是給id設(shè)置默認(rèn)值為UUID,這里的new,代表即將插入的數(shù)據(jù)。這里其實(shí)可以寫一些判斷,什么情況下執(zhí)行什么之類的。
3.效果

可以看到,在表t_student_course中,已經(jīng)建立了觸發(fā)器,下面新增一條記錄測試一下:

我測試是可以的,有興趣的可以自己測試一下。
到此這篇關(guān)于mysql給id設(shè)置默認(rèn)值為UUID的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)mysql id設(shè)置默認(rèn)值為UUID內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql服務(wù)添加 iptables防火墻策略的方案
這篇文章主要介紹了給Mysql服務(wù)添加 iptables防火墻策略的方案,本文給大家分享兩種解決方案,需要的朋友可以參考下2021-04-04
MySql獲取某個(gè)字段存在于哪個(gè)表的sql語句
本文為大家詳細(xì)介紹下通過MySql查詢某個(gè)字段所在表是哪一個(gè),具體的sql語句如下,感興趣的朋友可以參考下,希望對大家有所幫助2013-07-07
MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實(shí)現(xiàn)示例
本文主要介紹了MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
在MySQL?8.0版本中開啟遠(yuǎn)程登錄詳細(xì)的操作步驟
有時(shí)數(shù)據(jù)庫所在機(jī)器與項(xiàng)目運(yùn)行的機(jī)器不是同一個(gè),那么就涉及到遠(yuǎn)程鏈接數(shù)據(jù)庫了,下面這篇文章主要給大家介紹了關(guān)于在MySQL?8.0版本中開啟遠(yuǎn)程登錄詳細(xì)的操作步驟,需要的朋友可以參考下2024-04-04
高并發(fā)狀態(tài)下Replace Into造成的死鎖問題解決
本文主要介紹了高并發(fā)狀態(tài)下Replace Into造成的死鎖問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Navicat連接mysql?、?sqlserver數(shù)據(jù)庫的步驟與常見問題解決
Navicat是一款支持多種數(shù)據(jù)庫的管理工具,包括MySQL、PostgreSQL、Oracle和SQL?Server等,這篇文章主要介紹了Navicat連接mysql?、?sqlserver數(shù)據(jù)庫的步驟與常見問題解決,需要的朋友可以參考下2026-01-01

