日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

MySQL觸發(fā)器學習總結(jié)_MySQL教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:Mysql中“Insert into xxx on duplicate key update”問題
在看代碼的過程中碰到了這一用法,不太理解,google了一下。它的意義其實是如果在insert語句末尾制定了on duplicate key update語句的話,則當插入行會導致一個unique索引或者primary key中出現(xiàn)重復值,則執(zhí)行update中的語句,否則才插入新行。 例如,如果列a被定義為u

  1. #創(chuàng)建觸發(fā)器,當往order表中添加記錄是,更新goods表 
  2. delimiter $ 
  3. CREATE TRIGGER trigger1  
  4. AFTER INSERT ON `order
  5. FOR EACH ROW 
  6. BEGIN 
  7. UPDATE goods SET num=num-new.much WHERE id=new.gid; 
  8. END
  9.  
  10. 執(zhí)行 
  11. INSERT INTO `order` (gid,much) VALUES(1,5) 
  12. 后 
  13. SELECT * FROM goods WHERE id=1 
  14. 發(fā)現(xiàn) 電視機的數(shù)量剩下30 
  15.  
  16. 當執(zhí)行 
  17. INSERT INTO `order` (gid,much) VALUES(2,100) 
  18. 后 
  19. 發(fā)現(xiàn) 
  20. 冰箱的數(shù)量剩下-77 
  21.  
  22. 這是一個很明顯的漏洞,如何補救呢? 
  23. 由于update事件是在insert之后發(fā)生的,所以我們無法事先對用戶的下單數(shù)量(即order表  
  24. 中的much字段)進行過濾 
  25. 解決辦法: 
  26. 在創(chuàng)建觸發(fā)器的時候,將after關(guān)鍵字改成before,并對用戶的下單數(shù)量進行判斷 
  27.  
  28.  
  29. 首先,得刪除先去的觸發(fā)器 
  30. drop trigger trigger1; 
  31.  
  32. #創(chuàng)建觸發(fā)器 
  33. #觸發(fā)時間:before 
  34. delimiter $ 
  35. CREATE TRIGGER trigger1 
  36. BEFORE INSERT ON `order
  37. FOR EACH ROW 
  38. BEGIN 
  39. IF new.much >5 THEN 
  40. SET new.much=5 
  41. END IF; 
  42. UPDATE goods SET num=num-new.much WHERE id=new.gid; 
  43. END
  44. 這樣,當執(zhí)行INSERT INTO `order` (gid,much) VALUES(2,100)的時候,寫入order表的下單數(shù)量其實只有5,同樣,goods表中的庫存數(shù)量只有減少5,因為在insert操作之前先觸發(fā)了 
  45. update操作,借此可以對下單數(shù)量做個判斷 

分享:Mysql字符集設置指南
在mysql客戶端與mysql服務端之間,存在著一個字符集轉(zhuǎn)換器。 character_set_client =gbk:轉(zhuǎn)換器就知道客戶端發(fā)送過來的是gbk格式的編碼 character_set_connection=gbk:將客戶端傳送過來的數(shù)據(jù)轉(zhuǎn)換成gbk格式 character_set_results=gbk: 注: 以上三個字符集可以使用s

來源:未知//所屬分類:MySQL教程/更新時間:2012-07-24
相關(guān)MySQL教程