oracle mysql 数据验证工具_数据库管理工具Navicat Premium,使用MySQL 8中的触发器验证数据...

数据库管理工具Navicat Premium,使用MySQL 8中的触发器验证数据

发布时间:2020-06-17 16:21:35

来源:51CTO

阅读:628

作者:wx5d39183e901c5

Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。它与 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、MongoDB Atlas、阿里云、腾讯云和华为云等云数据库兼容。

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

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

设计触发器

我们将使用Sakila示例数据库。它包含一些以虚构视频租赁店为主题的相关表格。在这里,他们在Navicat Premium导航窗格中:

8190a1d807dbbd6fdfe5daf4ac885ef7.png

我们将把触发器添加到电影表中。如果您在Designer中打开它,您会看到有几个选项卡:

7629a2cf78bc82e031948e9951148ece.png

单击“触发器”选项卡可显示已为该表定义了一些触发器。例如,ins_film触发器将胶片信息复制到数据插入的film_text表中。这是分配给触发器的常见任务。

8fce26b7927b671bb1097d631b7b365f.png

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

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

0fd0662a9a4dcd314d37e53d3def972b.pngLANGUAGE_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。我们的触发器将检查original_language_id列中的值。

1、在电影表的“设计视图”中,选择“触发器”选项卡,然后单击“添加触发器”按钮。

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

2、分配名称“ins_validate_language”,从Fires下拉菜单中选择BEFORE,然后单击Insert复选框。

3、这是触发器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

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

177164e3efc19b13db442901dfac71a8.png

4、单击“保存”按钮以创建触发器。

测试触发器

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

1、在编辑器中打开电影表。

2、导航到最后一行。

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

aeeaba94d58a1aa7dfb9ad83d0934f96.png

4、在表单中,您只需输入标题和language_id;所有其他字段都具有默认值或不是必需的。

5、单击添加(复选标记)按钮时,您应该看到我们的错误消息:

44ab17f86948cfa4654057469c738078.png

结论

触发器是验证的理想选择,因为它们可以在插入或更新数据之前执行。我们通过在Navicat Premium中编写触发器,了解了如何将触发器用于验证目的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值