溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)

發(fā)布時間:2020-06-17 16:21:35 來源:網(wǎng)絡 閱讀:971 作者:wx5d39183e901c5 欄目:MySQL數(shù)據(jù)庫

Navicat Premium?是一套數(shù)據(jù)庫管理工具,讓你使用一個程序即可同時連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數(shù)據(jù)庫。它與 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、MongoDB Atlas、阿里云、騰訊云和華為云等云數(shù)據(jù)庫兼容。

有一些非常好的理由可以解釋為什么數(shù)據(jù)驗證最好在數(shù)據(jù)庫級別而不是在應用程序級別執(zhí)行。例如,多個應用程序可以訪問相同的數(shù)據(jù)源。因此,您可以依賴于數(shù)據(jù)的一致性和有效性,而不必依賴于在應用程序端應用的驗證邏輯,這可能在不同的實現(xiàn)中不一致。此外,觸發(fā)器是驗證的理想選擇,因為它們可以在插入或更新數(shù)據(jù)之前執(zhí)行。觸發(fā)器還可以防止在提供錯誤消息時應用數(shù)據(jù)庫事務。

在這篇文章中,我們將在Navicat Premium中編寫一個觸發(fā)器,用于驗證MySQL數(shù)據(jù)庫表上的插入操作。

設(shè)計觸發(fā)器

我們將使用Sakila示例數(shù)據(jù)庫。它包含一些以虛構(gòu)視頻租賃店為主題的相關(guān)表格。在這里,他們在Navicat Premium導航窗格中:

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)

我們將把觸發(fā)器添加到電影表中。如果您在Designer中打開它,您會看到有幾個選項卡:

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)

單擊“觸發(fā)器”選項卡可顯示已為該表定義了一些觸發(fā)器。例如,ins_film觸發(fā)器將膠片信息復制到數(shù)據(jù)插入的film_text表中。這是分配給觸發(fā)器的常見任務。

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)

現(xiàn)在我們將添加一個觸發(fā)器,確保使用original_language_id插入外國電影。

電影的語言實際存儲在語言查找表中:

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)

LANGUAGE_ID名稱?最后更新
1英語2006-02-15 05:02:19
2意大利2006-02-15 05:02:19
3日本2006-02-15 05:02:19
4普通話2006-02-15 05:02:19
5法國2006-02-15 05:02:19
6德語2006-02-15 05:02:19

除1之外的任何language_id也應具有original_language_id。我們的觸發(fā)器將檢查original_language_id列中的值。

1、在電影表的“設(shè)計視圖”中,選擇“觸發(fā)器”選項卡,然后單擊“添加觸發(fā)器”按鈕。

這將在觸發(fā)器表中添加一個新行。

2、分配名稱“ins_validate_language”,從Fires下拉菜單中選擇BEFORE,然后單擊Insert復選框。

3、這是觸發(fā)器Body:

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

這是我們的觸發(fā)器,填寫了所有字段:

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)


4、單擊“保存”按鈕以創(chuàng)建觸發(fā)器。

測試觸發(fā)器

現(xiàn)在是時候驗證我們的觸發(fā)器是否按預期工作。為了測試它,讓我們用一個外語language_id為電影表添加一個新行。

1、在編輯器中打開電影表。

2、導航到最后一行。

3、選擇表單視圖,然后單擊加號(+)按鈕添加新行:

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)

4、在表單中,您只需輸入標題和language_id;所有其他字段都具有默認值或不是必需的。

5、單擊添加(復選標記)按鈕時,您應該看到我們的錯誤消息:

數(shù)據(jù)庫管理工具Navicat Premium,使用MySQL 8中的觸發(fā)器驗證數(shù)據(jù)

結(jié)論

觸發(fā)器是驗證的理想選擇,因為它們可以在插入或更新數(shù)據(jù)之前執(zhí)行。我們通過在Navicat Premium中編寫觸發(fā)器,了解了如何將觸發(fā)器用于驗證目的。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI