彩票走势图

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

转帖|使用教程|编辑:鲍佳佳|2020-08-28 11:45:22.527|阅读 463 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

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

点击下载Navicat Premium最新试用版

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

在今天的文章中,我们将在 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 列中的值。

  • 在 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
    这是我们填写了所有字段的触发器:
  • 点击“保存”按钮以创建触发器。
测试触发器

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

  • 在编辑器中打开 film 表。
  • 导航到最后一行。
  • 选择“表单视图”,然后点击加号(+)按钮添加新行:

  • 在表单中,你只需输入 title 和 language_id,所有其他字段都具有默认值或不是必需的。
  • 点击“添加”(勾号)按钮时,你应该看到我们的错误消息:

总结

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


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP