标签: domain

如何在postgres中为复合类型的字段指定非空约束

假设我想要一个复合类型的地址,例如:

create type address as (
  city text,
  address_line text,
  zip_code int
);
Run Code Online (Sandbox Code Playgroud)

为了使数据完整性更好,我不想允许NULLs 成为cityaddress_line或 的成员zip_code。所以我想对not null这些字段进行限制。

创建域检查对我来说不起作用。所以这段代码会产生错误:

create domain address_domain as address 
check (
  value.city is not null and 
  value.address_line is not null and
  value.zip_code is not null
);
Run Code Online (Sandbox Code Playgroud)

您可能会说:“那么,为什么不将地址存储为三列,并向字段添加约束呢?”。我会回答说,我希望能够使地址本身可以为空,但如果地址存在,那么它的所有字段也应该存在。像这样的东西:

create table companies (
  id serial primary key,
  name text not null,
  headquaters address -- this one can be null tho
)
Run Code Online (Sandbox Code Playgroud)

postgresql composite-types domain

13
推荐指数
1
解决办法
3122
查看次数

为什么 PostgreSQL 在禁止 NULL 的域中允许 NULL?

PostgreSQL 允许NULL在标记为 的域中使用s NOT NULL。这是为什么,文档是这么说的,

尽管存在这样的约束,但名义上属于域类型的列仍有可能读取为空。例如,如果域列位于外连接的可为空一侧,则这可能发生在外连接查询中。

这能更好地解释吗?

postgresql null domain

10
推荐指数
1
解决办法
686
查看次数

显示域详细信息

在 PostgreSQL 中显示表的列和约束是通过以下方式完成的:

\d+ <table_name>
Run Code Online (Sandbox Code Playgroud)

其中列出了表的列、数据类型和修饰符。

如何显示 Posgresql的详细信息和约束?

postgresql domain

8
推荐指数
1
解决办法
3789
查看次数

SQL Server 是否支持自定义域?

PostgreSQL 支持DOMAIN规范,来自 SQL 2011 工作草案规范,

域是命名的用户定义对象,可以在某些可以指定数据类型的地方将其指定为数据类型的替代。域由数据类型、可能是默认选项和零个或多个(域)约束组成。

这使我们能够做一些非常酷的事情,例如通过不区分大小写的文本类型为电子邮件实现HTML5 规范的它确保所有访问数据库的客户端都对插入的数据进行完整性检查。

CREATE DOMAIN email AS citext
  CHECK ( value ~ '^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$' );
Run Code Online (Sandbox Code Playgroud)

SQL Server 是否支持触发器系统之外的任何此类功能?

sql-server datatypes sql-clr sql-standard domain

8
推荐指数
1
解决办法
1199
查看次数

SSMS 无法确定远程计算机是否连接到域

我最近设置了一个在其上运行 SQL 实例的新服务器(2017 年),我能够使用 SSMS 远程连接到该服务器,但是当我尝试添加新登录名时,我收到附加的错误。两台机器都在同一个域中。

收到错误

我之前已经做了一些研究,并在下面的配置中打开了端口 5002、5001、135 和 88。

开放的端口

我已经确认是防火墙的问题,关闭域防火墙就可以访问。

我错过了什么吗?

如果相关,服务器托管在 Azure 上

ssms active-directory azure domain

3
推荐指数
1
解决办法
2791
查看次数