当前位置: 首页 > article >正文

在 Navicat 17 中扩展 PostgreSQL 数据类型 | 创建自定义域

定义域

以适当的格式存储数据可以确保数据完整性,防止错误,优化性能,并通过实施验证规则和支持高效数据管理来维护系统间的一致性。基于这些原因,顶级关系数据库(如PostgreSQL)提供了多种数据类型。此外,PostgreSQL允许通过“CREATE DOMAIN”和“CREATE TYPE”语句创建自定义数据类型,使开发人员能够扩展数据类型,以加强针对特定应用程序的数据验证、完整性和一致性。在今天的博文中,我们将学习如何通过 Navicat Premium 17 为免费的 DVD Rental database 创建一个自定义域。第二部分将介绍类型。

CREATE DOMAIN 和 CREATE TYPE 的快速比较

虽然 CREATE DOMAIN 和 CREATE TYPE 语句都可以用来创建用户定义的数据类型,但有一些关键区别需要注意:

  • CREATE DOMAIN 创建用户定义的数据类型,并带有 NOT NULL、CHECK 等约束条件。
  • CREATE TYPE 创建一个复合类型,作为存储过程中返回值的数据类型。

创建电子邮件定义域

定义域允许你在多个表中定义可重复使用的验证规则,从而集中约束管理,例如创建一个标准约束,防止 NULL 值,并为特定字段类型删减空白。下面的示例为电子邮件地址创建了一个带有验证检查的域:

CREATE DOMAIN email AS VARCHAR(255)
CHECK (
  VALUE ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$'
);

-- Use in a table definition
CREATE TABLE customer_contacts (
  customer_id INT,
  contact_email email
);

Navicat Premium 17 和 Navicat for PostgreSQL 17 都提供一个基于图形用户界面的工具,用于生成定义域和类型,而无需用户了解所有确切的语法。你可以在主工具栏的“其他”下找到这两个工具。(这两个菜单项都在下面用 红色 框突出显示):

others_context_menu (45K)

其中的“域”工具包括四个选项卡:常规,检查,注释和 SQL 预览。

常规属性

所有定义域都基于一种基础类型。在本例中,就是 VARCHAR。选择“基础类型类别”中的“Base Type”后,我们可以从两个基础类型下拉菜单中选择“pg_catalog”和“varchar”。我们还需要确保 VARCHAR 的长度为 255。下面是包含所有这些信息的常规选项卡:

email_domain_general_tab (39K)

检查

在下一个选项卡中,我们可以定义一个或多个检查,以便在有人试图为我们的类型赋值时执行。 我们的检查将根据 RegEx(正则表达式)测试值:

email_domain_checks_tab (21K)

SQL 预览

此时,我们既可以继续保存域,执行生成的 CREATE DOMAIN 语句,也可以单击 SQL 预览选项卡,在保存之前查看语句:

email_domain_preview_and_save_as_dialog (38K)

请注意,域名是“无标题”,因为我们还没有保存定义。这是正常现象。

在表中使用电子邮件定义域

确认“电子邮件”域是否已创建的最佳方法是在表中试用。“dvdrental”数据库中的“staff”表包含一个电子邮件域。目前,它将值存储为 VARCHAR,没有进行任何验证检查。我们可以从表设计器的类型下拉菜单中选择“(Domain)”选项,然后为对象类型选择“public”和“email”,从而将类型更改为域:

setting_column_to_email_domain (92K)

保存表后,如果试图更改(或添加)不是有效电子邮件地址的值,就会违反约束:

failed_check (63K)

结语

通过为免费 dvdrental 数据库创建自定义域,我们了解了如何通过域来定义可重复使用的验证规则以帮助集中约束管理。在第 2 部分,我们将使用 Navicat Premium 17 的“类型”工具创建我们自己的类型。

PostgreSQL 相关文章

为什么在下一个 IT 项目中选择使用 PostgreSQL

为什么说Navicat与PostgreSQL是数据库行业的中流砥柱?

探索 PostgreSQL 的高级数据类型 | 数组和枚举

探索 PostgreSQL 的高级数据类型 | DML/SQL 语句

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图的使用

PostgreSQL 中的多版本并发控制

Navicat 面向 PostgreSQL 查询超时的工具解决方案

在 Navicat Monitor 3 中查看 PostgreSQL 实例详细信息

使用 Navicat Monitor 3 跟踪 PostgreSQL 实例查询

使用 Navicat Monitor 3.0 监控 PostgreSQL


http://www.kler.cn/a/537948.html

相关文章:

  • postgreSQL16.6源码安装
  • Spring Boot整合MQTT
  • 如何避免大语言模型中涉及丢番图方程的问题
  • 视频采集卡接口
  • 四、OSG学习笔记-基础图元
  • cursor指令工具
  • 二叉树理论基础详解:从零开始理解数据结构的核心
  • react 路由配置:从入门到精通
  • 美的java面试经验
  • docker compose 文件详解
  • 【含文档+PPT+源码】基于Python校园跑腿管理系统设计与实现
  • 网络安全治理架构图 网络安全管理架构
  • upx压缩工具使用说明
  • STC51 单片机中,定时器 / 计数器相关的寄存器
  • CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战
  • R包:ggalign调整和组合多个图形的R包
  • 判断您的Mac当前使用的是Zsh还是Bash:echo $SHELL、echo $0
  • java基础4(黑马)
  • 语言月赛 202308【小粉兔做麻辣兔头】题解(AC)
  • TypeScript 中的元组:固定长度的数组
  • 论软件架构风格论文
  • 【C#】任务调度的实现原理与组件应用Quartz.Net
  • windows蓝牙驱动开发-蓝牙 LE 邻近感应配置文件
  • 小程序:如何暂时停用小程序?
  • 模板方法模式(Template)
  • 利用UNIAPP实现短视频上下滑动播放功能