轉帖|使用教程|編輯:鮑佳佳|2020-08-28 11:45:22.527|閱讀 526 次
概述:Navicat Premium是一個可連接多種數據庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數據庫,讓管理不同類型的數據庫更加的方便。在今天的文章中,我們將在 Navicat Premium 編寫一個觸發器,用于驗證 MySQL 數據庫表上的插入操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Navicat Premium是一個可連接多種數據庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數據庫,讓管理不同類型的數據庫更加的方便。
有一些非常好的理由可以解釋為什么數據驗證最好在數據庫級別而不是在應用程序級別執行。例如,多個應用程序可以訪問相同的數據源。因此,你可以依賴于數據的一致性和有效性,而不必依賴于在應用程序端應用不一致的驗證邏輯。此外,觸發器是驗證的理想選擇,因為它們可以在插入或更新數據之前執行。觸發器還可以防止在提供錯誤消息時應用數據庫事務。
在今天的文章中,我們將在 Navicat Premium 編寫一個觸發器,用于驗證 MySQL 數據庫表上的插入操作。
設計觸發器我們將使用 Sakila 示例數據庫。它包含一些以虛構影碟出租店為主題的相關表。在這里,他們在 Navicat Premium 導覽窗格中的表如下圖:
我們將把觸發器添加到 film 表中。如果在設計器中打開它,你會看到有幾個選項卡:
點擊“觸發器”選項卡可顯示已為該表定義的一些觸發器。例如,在數據插入 film 表時,ins_film觸發器將電影信息復制到 film_text 表中。這是觸發器的常見任務。
現在添加一個新觸發器,確保使用 original_language_id 插入外國電影。
電影的語言實際存儲在 language 查找表中:
除了值為 1 之外的任何其他 language_id 也應具有 original_language_id。我們的觸發器將檢查 original_language_id 列中的值。
BEGIN IF NEW.language_id != 1 AND NEW.original_language_id IS NULL THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Original language id is required for Foreign language films.'; END IF; END這是我們填寫了所有字段的觸發器:
現在是時候驗證我們的觸發器是否按預期工作。為了測試它,讓我們用一個外語 language_id 為 film 表添加一個新行。
觸發器是數據驗證的理想選擇,因為它們可以在插入或更新數據之前執行。我們通過在 Navicat Premium中編寫觸發器了解如何將觸發器用于驗證目的。你可以通過免費試用進行評估。慧都作為premiumSoft授權合作商現Navicat Premium正版授權立減500,低至5004元!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: