我的数据库中不同表中的许多列都有约束between 1 and 3(相当于any (array[1,2,3]),因为它们都是整数).这可能需要更改以在将来允许4,所以我想让它们都引用一个变量.

这个数据库有一个Singleton INFO表,所以我想我可以在其中添加一列并引用其中的唯一值?我try 了下面的代码,但它只显示"Column Privacy_Options is Not Existing"

alter table info add privacy_options integer array;
update info set privacy_options = array [1,2,3];
alter table system_config add check (default_privacy_shown = any (info(privacy_options)));

推荐答案

不能在check约束中使用子查询.但这对你来说应该是有效的:

alter table system_config add check (default_privacy_shown in (1, 2, 3))

另外,确保库仑system_config.default_privacy_shown存在.

如果需要,在添加约束之前添加它:alter table system_config add default_privacy_shown integer.

Sql相关问答推荐

如何查询一个名称是根据PL/pgSQL函数结果构建的表?

如何在Snowflake SQL存储过程中传递LIMIT和OFFSET的参数?

如何根据同一表中某一列中的值重新排列行(仅输出它们)(重新排序)?

BigQuery-当子查询不返回任何结果时,所有结果为零

SQL Select 最小优先级

通过之前的连接-这是Oracle的错误吗?

你能过滤一个列表只返回多个结果吗?

Redshift PL/pgSQL循环中的参数化列名

仅在日期相隔时递增(Oracle SQL)

两个月之间的WHERE CASE WHEN-ORA-00905:缺少关键字

Proc SQL Select Distinct SAS

插入具有预期逻辑的查询以Forking 表

为什么SQL in中的空子查询有时被视为null

Snowflake 中的分层数据

如何优化仅返回符合条件的三条记录的查询?

批量更改WooCommerce中所有产品的税收状态

如何根据另一列对行值进行分组?

奇怪的甲骨文行为

pyspark 将列转换为行

BigQuery 将一行拆分为多列