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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 分表分庫怎么進(jìn)行數(shù)據(jù)切分
這篇文章主要介紹了MySQL 分表分庫怎么進(jìn)行數(shù)據(jù)切分,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-03-03Ubuntu20下MySQL?8.0.28?安裝卸載方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Ubuntu20下MySQL?8.0.28?安裝卸載方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04mysql數(shù)據(jù)庫提權(quán)的三種方法
文介紹了MySQL數(shù)據(jù)庫的三種提權(quán)方法:UDF提權(quán)、MOF提權(quán)和啟動(dòng)項(xiàng)提權(quán),同時(shí)列出了一些常見數(shù)據(jù)庫及其默認(rèn)端口,下面就來介紹一下,感興趣的可以了解一下2024-09-09