数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。在今天的文章中,我们将在 Navicat Premium 编写一个触发器,用于验证 MySQL 数据库表上的插入操作。

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

Navicat Premium最新试用版

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

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

设计触发器

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

数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据

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

数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据

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

数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据

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

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

数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据

除了值为 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

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

数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据
  • 点击“保存”按钮以创建触发器。
  • 测试触发器

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

    • 在编辑器中打开 film 表。
    • 导航到最后一行。
    • 选择“表单视图”,然后点击加号(+)按钮添加新行:
    • 数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据
    • 在表单中,你只需输入 title 和 language_id,所有其他字段都具有默认值或不是必需的。
    • 点击“添加”(勾号)按钮时,你应该看到我们的错误消息:
    • 数据管理器Navicat Premium使用教程:如何使用 MySQL 8 中的触发器验证数据

    总结

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

    标签:

    来源:慧都

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2020年7月25日
    下一篇 2020年7月25日

    相关推荐

    发表回复

    登录后才能评论