问题标签 [sql-domain]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在 SQLAlchemy 中表示自定义 PostgreSQL 域?
我开始将 Alembic 合并到我已经使用 SQLAlchemy 表定义的项目中。目前我的数据库架构在我的应用程序外部进行管理,我想将整个架构放入我的表定义文件中。
在 PostgreSQL 中,我使用自定义域来存储电子邮件地址。PostgreSQL DDL 是:
如何在 SQLAlchemy 中表示该域的创建以及将其用作列数据类型?
postgresql - 文本数据类型的域是否存储为表中的文本?(PostgreSQL)
因为 PostgreSQL 中没有set
类型,所以我不得不使用domain
. 我已经命名了一个域性别。它是文本类型。然后在 users 表中,我创建了一个具有该性别类型的列。现在,如何将性别存储在 users 表中?作为文本还是二进制?
java - 如何在从数据模型生成 DDL 时从枚举生成域?
enum
有没有办法为从数据模型生成 DDL 时定义的字段生成域?
定义为的字段的默认行为enum
是EnumType.STRING
或EnumType.ORDINAL
。在这种特殊情况下,我使用@Enumerated(EnumType.STRING)
.
我的枚举.java
我的实体.java
不幸的是,这被定义为“仅” character varying(255)
(我使用的是 PostgreSQL RDBMS)。
这当然提供了将与实际无关的垃圾放在那里的机会enum
。
在这个地方,我希望能够提示 Hibernate 生成一个域,其中只包含那些实际属于枚举的允许值。
作为一种解决方法,我想使用@Check
注释生成检查约束。然而令人遗憾的是,这不能动态地完成。我想循环遍历MyEnum.values()
以生成此检查,这样我就不必在枚举获取附加值时同时更改它。
这当然会导致语法错误
注释属性 Check.constraints 的值必须是常量表达式。
这对我来说很清楚,因为属性值必须在编译时确定。
有没有其他方法可以巧妙地做到这一点?
postgresql - jOOQ 和 PostgreSQL 域:映射到特定对象类型
我正在使用 PostgreSQL 9.5 和 jOOQ 3.8.4 进行一些测试。
具体来说,我想创建一个如下所示的域:
然后我想创建一个类型如下:
最后,我有一个表,其类型为字段,例如:
我看到 jOOQ 3.8.4 将字段映射生something
成为Object
(在表记录和 POJO 中)。我期待BigDecimal
,因为该域使用NUMERIC
.
我错了吗?如果没有,有什么办法可以解决这个问题吗?
也许我可以使用customTypes
andforcedTypes
注册一个转换器,但我不确定它是否适用于用户定义的类型!有这方面的经验吗?
arrays - 为查询返回的每一行调用 set-returning plpgsql 函数
在我的 Postgres 9.6 数据库中,我有以下自定义域和表定义:
以下函数能够为单个项目产生我想要的结果。
我想对执行特定查询产生的所有 id
' 执行相同的操作,并最终得到如下结果:
postgresql - PostgreSQL 12 中是否可以使用自定义域数组?
我已将自定义域声明tmoney
为
然后我在表声明中使用它的数组,
在 PostgreSQL 12 中没有解析异常,因为它似乎以前存在过(请参阅创建自定义域 postgres 数组),但是,每当我尝试检索作为 tmoney[] 插入的值时,都会发现 DBCException。请注意,smallint[] 不会发生此错误。
https://www.postgresql.org/docs/current/sql-createdomain.html上的文档仅指定
tdata_type – 域的基础数据类型。这可以包括数组说明符。
这与创建为的域一致
但是,由于 PostgreSQL 12 解析器不阻止tmoney[5]
在表声明中使用,我想知道是否有不同的语法允许我使用自定义域的第一个版本。
mysql - MySQL 替代 PostgreSQL 的自定义数据类型(和域)
在 PostgreSQL 中,如果我将特定数据类型(例如 an mail address
)存储在跨多个表的多个列中,我可以简单地定义具有所有约束的自定义邮件类型,如下所示:
然后像这样使用它:
我发现 MySQL 不是对象关系数据库,因此没有自定义数据类型。
我的问题是:
人们如何在 MySQL 中处理多列中重复出现的数据类型,以防止复制粘贴相同的约束?
postgresql - 更改 DOMAIN 中的 CHECK 约束
有没有办法修改DOMAIN
Postgres 13.4中现有约束的细节?
我一直在尝试并检查文档,并怀疑答案是:“不DROP
。约束(或域和约束?),并重建它。”
这很尴尬,因为我有已经使用约束的字段和函数,所以我还必须使用一些级联的项目DROP
和CREATE
. 我可以这样做,但它有点牵涉。
例如,我有一个简单的域列表,如下所示:
我想通过再插入一个名称来更改VALUE IN
列表: 。CHECK
'user_analytics'
在不删除和重建域、约束或两者的情况下,这是否可能?
如果不是,我可以进行级联删除和重建,并为未来计算出DOMAIN
不适合此类事情的工具。我总是可以使用一个小的查找表来代替。我只是喜欢DOMAIN
它使参数和列的意图更清晰。