oracle mysql 数据验证工具_数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据...

本文介绍了使用Navicat Premium创建MySQL数据库触发器进行数据验证的过程。通过在film表上设置触发器,确保在插入外语电影时original_language_id字段不为空,从而保证数据一致性。通过触发器进行数据验证可以防止错误并在多个应用程序共享同一数据源时保持数据有效性。
摘要由CSDN通过智能技术生成

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

有一些非常好的理由可以解释为什么数据验证最好在数据库级别而不是在应用程序级别执行。例如,多个应用程序可以访问相同的数据源。因此,你可以依赖于数据的一致性和有效性,而不必依赖于在应用程序端应用不一致的验证逻辑。此外,触发器是验证的理想选择,因为它们可以在插入或更新数据之前执行。触发器还可以防止在提供错误消息时应用数据库事务。

在今天的文章中,我们将在 Navicat Premium 编写一个触发器,用于验证 MySQL 数据库表上的插入操作。

设计触发器

我们将使用 Sakila 示例数据库。它包含一些以虚构影碟出租店为主题的相关表。在这里,他们在 Navicat Premium 导览窗格中的表如下图:

1b6868ea188d9956a6989923536f880d.png

我们将把触发器添加到 film 表中。如果在设计器中打开它,你会看到有几个选项卡:

38db9cd77d7ab0dc9ca00a099cc096e5.png

点击“触发器”选项卡可显示已为该表定义的一些触发器。例如,在数据插入 film 表时,ins_film触发器将电影信息复制到 film_text 表中。这是触发器的常见任务。

213c8f4f66c98b616304be844efdfc3f.png

现在添加一个新触发器,确保使用 original_language_id 插入外国电影。

电影的语言实际存储在 language 查找表中:

0e6e497804adb3af5e54244d19f1891a.png

除了值为 1 之外的任何其他 language_id 也应具有 original_language_id。我们的触发器将检查 original_language_id 列中的值。

在 film 表的设计视图中,选择“触发器”选项卡,然后点击“添加触发器”按钮。

这将在触发器表中添加一个新行。

为触发器指定名称“ins_validate_language”,从“触发”下拉菜单中选择“BEFORE”,然后点击“插入”复选框。

这是触发器主体: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

这是我们填写了所有字段的触发器:

b51241a8b52df0fdcac73550560c08c0.png

点击“保存”按钮以创建触发器。

测试触发器

现在是时候验证我们的触发器是否按预期工作。为了测试它,让我们用一个外语 language_id 为 film 表添加一个新行。

在编辑器中打开 film 表。

导航到最后一行。

选择“表单视图”,然后点击加号(+)按钮添加新行:

475d01e206b1fc09af4cad7b6b42ecd3.png

在表单中,你只需输入 title 和 language_id,所有其他字段都具有默认值或不是必需的。

点击“添加”(勾号)按钮时,你应该看到我们的错误消息:

a6415c954b6c541e2d346d133731dea5.png

总结

触发器是数据验证的理想选择,因为它们可以在插入或更新数据之前执行。我们通过在 Navicat Premium中编写触发器了解如何将触发器用于验证目的。你可以通过免费试用进行评估。慧都作为premiumSoft授权合作商现Navicat Premium正版授权立减500,低至5004元!

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

a6e1590ae4b228073faff3806334194e.png0

好文不易,鼓励一下吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值