當前位置:
首頁 > 知識 > MySQL實現自動使用uuid作為主鍵以及解決不能調用觸發器的一點思路

MySQL實現自動使用uuid作為主鍵以及解決不能調用觸發器的一點思路

這裡使用觸發程序實現此功能.

觸發程序語法如下:

Create trigger

{before|after}

{insert|update|delete}

On

For each row

<觸發程序SQL語句>

核心代碼:

1 use t14test
2 show tables
3 drop table if exists uuidTest
4 create table uuidTest(
5 testId VARCHAR(36) not NULL DEFAULT "1",
6 testData VARCHAR(32),
7 PRIMARY KEY(`testId`)
8 )
9 /*創建觸發器*/
10 /*
11 * terminal創建存儲過程需要定義分隔符
12 * delimiter //
13 * */
14 create trigger tri_auto_uuid
15 before insert
16 on uuidTest
17 for each ROW
18 BEGIN
19 if new.testId = "1" THEN set new.testId = (select uuid);
20 end if;
21 END
22 /*刪除觸發器*/
23 drop trigger if exists tri_auto_uuid
24 /*插入數據*/
25 insert into uuidTest(testData)VALUES("一條數據")
26 select * from uuidTest

運行了三次插入操作,結果如下:

使用觸發器可實現uuid作為主鍵.

有問題的代碼:

1 create trigger tri_auto_uuid
2 after insert
3 on uuidTest
4 for each ROW
5 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 就行了.

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

redis源碼筆記(一)——從redis的啟動到command的分發
使用ant自動構建apk
大數據平台常見異常-zookeeper
undefined與null的區別
第2篇:用as3.0製作一個滾動條組件

TAG:達人科技 |

您可能感興趣

未來MacBook可能會使用iPhone作為觸摸屏
我為什麼選擇了 iMac Pro 作為主力電腦
微軟不作為 又一開發商放棄Windows Phone平台
我試著用Surface Book 2作為我唯一的PC,它讓我失望了
華為或將開發自己的操作系統作為Android的替代品
作為 MacBook Pro 的用戶,你覺得這款設備最大的瓶頸在哪?
作為性能提升最大的 MacBook Pro,它的續航體驗變差了嗎?
Google不會使用Pogo-Sticking作為一個排名影響因素
作為Android用戶,你覺得iPhone XS如何?
Drake轉投阿迪?作為Jordan的支持者,你覺得事情將會怎麼發展?
現在SuperAMOLED作為三星的主屏材質,它有什麼樣的優缺點?
Microsoft Edge確認將Chromium作為渲染平台,但明天會更好
新專利:未來Mac/iPad屏幕或可作為智能鏡子使用
作為備用機,選擇iPhone 6還是iPhone SE?
作為第一批入手iPhone XR的用戶,現在感覺確實買早了!
作為一個潤唇膏,Holika這款包裝可以說非常?用心了!
VSS作為一把狙你用9mm手槍彈要臉不?VSS:我的9mm真不是手槍彈
Keras創建者深度思考:不要將AI作為操縱用戶的工具
中天微系統選擇QuickLogic作為eFPGA戰略性合作夥伴
Norm Architects設計的一間可以作為合作空間的菜單的展示廳