iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
佛心分享-IT 人自學之術

從零開始的MySQL開發旅程系列 第 16

Day16 專題二 利用觸發器追蹤投票者資料異動(下)

  • 分享至 

  • xImage
  •  

專題二 加入After型觸發器(在資料異動後觸發)

  • 目的:如果被輸入不良資料或因人為失誤輸錯資料時就可以根據紀錄來調查

  • 做法:在建立After觸發器前先建立稽核表來儲存資料的異動紀錄

  • 稽核表

    • 命名以_audit做結尾
    • 針對資料表voter、ballot、race、candidate、ballot_candidate建立稽核表來記錄誰修改哪一部分資料與修改日期時間
      https://ithelp.ithome.com.tw/upload/images/20240903/20168759VlSj0Osttq.png

    https://ithelp.ithome.com.tw/upload/images/20240903/20168759Euoz9zATHq.png

  • AI型觸發器

    • tr_voter_ai
      • 每當有新的資料插入資料表voter後都會觸發
      • 以函式now()取的當前日期和時間
      • 以函式user()取的哪位使用者做異動
      • 以函式concat()建立字串來顯示插入資料表的值為何。開頭文字設為New voter added -,接著以關鍵字new取得新插入資料表voter資料欄的值
        https://ithelp.ithome.com.tw/upload/images/20240903/20168759fKjo0wLena.png
    • tr_ballot_ai、tr_race_ai、tr_candidate_ai、tr_ballot_candidate_ai的寫法皆與tr_voter_ai相同
  • AD型觸發器

    • tr_voter_ad
      • 每當資料表voter被刪除資料後都會觸發
      • 與tr_voter_ai寫法類似,差在以關鍵字old
        https://ithelp.ithome.com.tw/upload/images/20240903/20168759SiGeFx6Uzn.png
      • tr_ballot_ad、tr_race_ad、tr_candidate_ad、tr_ballot_candidate_ad的寫法皆與tr_voter_ad相同
  • AU型觸發器

    • tr_voter_au
    • 每當有新的資料在資料表voter更新後都會觸發
    • 以使用者變數@change_msg來建立字串,保存異動資訊
    • 語法new.資料欄名稱!=old_資料欄名稱,來檢查是否前後資料是否相同,若有表示有更新過資料,會將更新訊息寫入稽核表,並以函式concat()建立顯示給使用者看的資訊
    • tr_ballot_au、tr_race_au、tr_candidate_au、tr_ballot_candidate_au的寫法皆與tr_voter_au相同
      https://ithelp.ithome.com.tw/upload/images/20240903/20168759TQi91yHs81.png
      https://ithelp.ithome.com.tw/upload/images/20240903/2016875929hpzQuDW1.png

現在需要建立的資料表與觸發器稽核表皆已完成!!就可以試著插入資料去做查詢選舉資料或是做資料的異動!

MYSQL的學習在這裡告一段落!
接下來,會分享關於NoSQL相關的學習內容,目前決定firebase做為學習主軸,並以作者申潤五的《實戰Firebase APP開發者的最佳雲端服務平台》這一本書與線上資源來做教材!
敬請期待!!

下一章:Firebase基本介紹與安裝


上一篇
Day15專題二 利用觸發器追蹤投票者資料異動(中)
下一篇
Day17 Nosql-Firebase
系列文
從零開始的MySQL開發旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言