AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[check-constraints](dba)

Martin Hope
stonefree
Asked: 2022-03-07 23:21:24 +0800 CST

仅在 NULL 时才允许更新 SQL 列

  • 1

tldr:是否可以创建强制执行的约束:仅当列的当前值为 NULL 时才允许更新列。

当用户采取行动时,我正在使用 Postgresql 将列从 NULL 更新为外键。

理想情况下,它是这样工作的:

  1. 用户执行操作。
  2. 如果列是 NULL,做一堆东西并将该列更新为新的外键。否则,跳到 3。
  3. 使用该列中的外键做某事。

但是,两个用户可以同时执行该操作。在这种情况下,步骤 2 将发生两次,因为对于两个用户,在操作开始时,该列仍然为空。然后,稍微早一点的用户设置的外键以及依赖它的任何东西都会丢失。

如何确保第 2 步只发生一次?是否可以创建一个仅在当前值为空时才允许更新该列的约束?或者,在事务的最后,我应该检查列是否已经设置,然后在服务器级别处理它?

postgresql check-constraints
  • 2 个回答
  • 285 Views
Martin Hope
yayaur
Asked: 2021-12-22 19:36:23 +0800 CST

如何在 postgres 中仅存储美国/加拿大电话号码?

  • -3

我只想在 Postgres TEXT 列中存储美国和加拿大的电话号码。我不想使用pg_libphonenumber.

为此,我应该使用什么 CHECK 约束?

postgresql check-constraints
  • 1 个回答
  • 443 Views
Martin Hope
Dora
Asked: 2021-09-30 18:12:17 +0800 CST

数据模型限制每个用户的行数

  • 0

这是关于我被要求创建与用户有关系的数据模型的 postgres。

例如一个名为 Comment M:1 User 的新数据模型,但在创建数据模型时是否可以设置只能创建 100 条推荐记录的限制?甚至可能没有将它们与 PK 链接可能只是一个带有user_id.

通常如果需要这样做,我会在 RESTful api 请求中检查用户是否已经创建了 100 条评论,但我告诉在数据模型方面这样做。我试着用谷歌搜索,但可能没有使用正确的关键字,所以在这里有点迷失,我想确保在一个表创建中这是可能的(评论)

提前感谢您的任何建议/意见。

postgresql check-constraints
  • 1 个回答
  • 116 Views
Martin Hope
gabtzi
Asked: 2021-06-30 14:43:35 +0800 CST

如何将特定行的列限制为仅设置特定值?

  • 0

我有下表

CREATE TABLE `mview_state` (
  `state_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'View State ID',
  `view_id` varchar(255) DEFAULT NULL COMMENT 'View ID',
  `mode` varchar(16) DEFAULT 'disabled' COMMENT 'View Mode',
  `status` varchar(16) DEFAULT 'idle' COMMENT 'View Status',
  `updated` datetime DEFAULT NULL COMMENT 'View updated time',
  `version_id` int(10) unsigned DEFAULT NULL COMMENT 'View Version ID',
  PRIMARY KEY (`state_id`),
  KEY `MVIEW_STATE_VIEW_ID` (`view_id`),
  KEY `MVIEW_STATE_MODE` (`mode`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COMMENT='View State'


有以下数据

https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=036fb3a69c75a92769a9262ec4af292e

我想添加一个约束,以便当view_id列值等于时catalogrule_rule,mode列必须等于enabled

我正在阅读,这看起来需要一个检查约束,但我不确定如何创建它,以便所有其他值都有效,但这个特定条件将始终得到遵守。

因此,只有当值为view_idis时才catalogrule_rule必须将 mode 设置为enabled

mariadb check-constraints
  • 1 个回答
  • 37 Views
Martin Hope
k_rus
Asked: 2021-05-02 05:15:08 +0800 CST

在批量加载之前或之后在 PostgreSQL 表上创建检查约束是否更有效?

  • 1

我正在 PostgreSQL 中创建一个表并首先使用数据批量加载。PostgreSQL 的文档建议先插入大量数据,然后再创建索引和外键约束。检查约束是怎么回事?在插入初始数据之前还是之后创建它们更好?还是有关系?

例如,一个表将有一个索引 on time,NOT NULL对它的约束,检查时间间隔上的约束,可能还有 on device。如果没有批量加载,则定义为:

CREATE TABLE conditions(
    time timestamptz NOT NULL,
    device int,
    value float,
    CONSTRAINT cond_time CHECK ("time" >= '2020-01-16 01:00:00+01'::timestamp with time zone 
                            AND "time" < '2020-01-23 01:00:00+01'::timestamp with time zone),
    CONSTRAINT cond_device CHECK (my_hash_function(device) >= 1073741823
                              AND my_hash_function(device) < 1075441823)
);
CREATE INDEX conditions_time_index ON conditions(time);

索引将在批量创建后创建。要批量加载的数据被清理并满足约束。将来在正常操作期间需要这些约束。

NULL NOT如果检查约束是在批量加载之前还是之后创建的,效率会更高吗?检查约束中的目标列上是否存在索引是否重要?

postgresql check-constraints
  • 1 个回答
  • 156 Views
Martin Hope
dbs-sqlite-novice
Asked: 2020-02-19 23:46:25 +0800 CST

Sqlite - 使用检查限制一个字符串的不同部分的字符

  • 0

我必须确保任何插入的电子邮件都具有以下格式:“X@YZ”

X 和 Y 只能包含字母和数字,Z 只能包含字母。

我试过这样的东西,但我不知道如何分别限制 X、Y 和 Z 的字符。

Create Table User(
Mail varchar check(Mail NOT GLOB '*[^A-Za-z0-9@.]*' AND Mail LIKE '%_@%_._%'));
sqlite check-constraints
  • 1 个回答
  • 251 Views
Martin Hope
WynDiesel
Asked: 2019-08-15 06:32:39 +0800 CST

为 postgres 中不存在的表创建外键

  • 0

我正在尝试组合一个解决方案,其中我有一堆包含我的模式创建的脚本文件。类似于 Visual Studio 的 SQL 项目,但适用于 Postgres。

我的问题是文件不一定会以正确的顺序读取,例如第一个文件/脚本/表读取依赖于第二个文件/脚本/表。

我希望有某种方法可以禁用检查以查看引用的表/列是否确实存在,创建所有表,然后重新启用检查。

我正在运行 9.2.24

我的第二个解决方案是以这样一种方式对文件进行排序,即它只在依赖项已经存在时创建一个表,但我上面提到的方法将是首选。

postgresql check-constraints
  • 1 个回答
  • 1430 Views
Martin Hope
Delmonte
Asked: 2019-04-11 07:44:49 +0800 CST

构建条件检查约束

  • 2

我正在尝试为我的表 TBL_AFIL 构建一个条件检查约束,该表有两个字段:

  • Fec_Renun 日期
  • flg_afil 整数

约束:IF flg_afil=1 THEN Fec_Renun 不能为 NULL。

ALTER TABLE TBL_AFIL
ADD CONSTRAINT FecRenun_Not_Null CHECK (Fec_Renun IS not NULL and flg_afil =1) ;

但它抛出了这个错误:

ORA-02293: cannot validate (FecRenun_Not_Null) - check constraint violated

但是当我运行这个查询时,它返回 0 行。

SELECT * FROM TBL_AFIL
WHERE FEC_RENUN IS NULL
AND FLG_AFIL =1;

我知道我可以在这个约束中添加ENABLE NOVALIDATE,但我很好奇为什么不能建立这个约束。

oracle check-constraints
  • 1 个回答
  • 758 Views
Martin Hope
BernardV
Asked: 2017-07-20 21:29:28 +0800 CST

检查 SQL Server 数据库上的约束是否适合数字范围、年份和月份?

  • 2

我正忙于设计一个网站,并且我的 SQL Server 数据库中有以下列的要求:

  1. 分配(值从 0 到 100)
  2. 年(仅)
  3. 月(仅)

我已经阅读了有关检查约束的内容,我想知道以下内容是否可行/以及它是否是上述内容的最佳解决方案:

allocation  | tinyint | not null | check constraint: 0-100
year        | date    | not null | check constraint: year
month       | date    | not null | check constraint: month

我也会从我的前端方面进行验证,但我听说最好在适当的地方设计具有这些限制的数据库。

sql-server check-constraints
  • 1 个回答
  • 534 Views
Martin Hope
Bradley Mecham
Asked: 2016-04-30 12:34:07 +0800 CST

基于其他行中的值限制行值

  • 5

是否可以有一个包含四列的表:

CREATE TABLE accrual (
    add_date date NOT NULL,
    user_id integer NOT NULL,
    rate integer NOT NULL,
    amount numeric(7,3)
); 

然后对其进行约束,以便如果我已经有一个条目,例如

('2016-04-01', 3, 120, 25.6)

尝试插入另一个具有相同日期和 user_id 但速率不同的条目会失败吗?IE

('2016-04-01', 3, 140, 15)

会失败,但是

('2016-04-02', 3, 140, 15)

或者

('2016-04-01', 4, 140, 15)

或者

('2016-04-01', 3, 120, 15)

会好吗?

需要明确的是,日期和 user_id 基本上就像一个索引,除了重复索引完全可以,只要费率相同。金额不受限制。

我正在使用 postrgesql 9.5 数据库,并且正在使用 PHP。我的猜测是,最简单的做法是编写一些 PHP 代码来执行检查。我能找到的最接近的问题是这个:

根据其他人的存在触发或检查约束插入值

但它是关于 Oracle 数据库的,并且略有不同。

感谢您的任何建议!!!

postgresql check-constraints
  • 1 个回答
  • 1994 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve