当前位置: 首页 > 知识库问答 >
问题:

PostgreSQL:违反check约束。失败的行包含

阎阎宝
2023-03-14

我试图用postgresql在数据库中插入一些数据,但仍然显示相同的消息:

错误:关系“empleados”的新行违反了检查约束“ck_empleados_documento”详细信息:失败的行包含(13,22222222,f,Lopez,Ana,冒号123,1,2,casado,1990-10-10)。

我不知道错误在哪里或者是什么,也没有找到任何解决这个问题的方法。这是我试图插入的内容:

insert into empleados (documento, sexo, apellido, nombre, domicilio, idSecc, cantidadhijos, estadocivil, fechaingreso) values('22222222','f','Lopez','Ana','Colon 123',1,2,'casado','1990-10-10');

这是表的结构:

CREATE TABLE public.empleados
(
  idempleado integer NOT NULL DEFAULT nextval('empleados_idempleado_seq'::regclass),
  documento character(8),
  sexo character(1),
  apellido character varying(20),
  nombre character varying(20),
  domicilio character varying(30),
  idsecc smallint NOT NULL,
  cantidadhijos smallint,
  estadocivil character(10),
  fechaingreso date,
  CONSTRAINT pk_empleados PRIMARY KEY (idempleado),
  CONSTRAINT fk_empleados_idsecc FOREIGN KEY (idsecc)
      REFERENCES public.puestos (idpuesto) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE NO ACTION,
  CONSTRAINT uq_empleados_documento UNIQUE (documento),
  CONSTRAINT ck_empleados_documento CHECK (documento ~~ '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'::text),
  CONSTRAINT ck_empleados_estadocivil CHECK (estadocivil = ANY (ARRAY['casado'::bpchar, 'divorciado'::bpchar, 'soltero'::bpchar, 'viudo'::bpchar])),
  CONSTRAINT ck_empleados_hijos CHECK (cantidadhijos >= 0),
  CONSTRAINT ck_empleados_sexo CHECK (sexo = ANY (ARRAY['f'::bpchar, 'm'::bpchar]))
)

共有1个答案

相云
2023-03-14

错误消息表明您的行违反了检查约束“ck_empleados_documento”

ck_empleados_documento定义为

CONSTRAINT ck_empleados_documento CHECK (documento ~~ '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'::text)

根据https://www.postgresql.org/docs/current/static/functions-matching.html#函数类:

documento LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'::text

来自同一页:

字符串喜欢模式

如果模式不包含百分号或下划线,则该模式只表示字符串本身

documento = '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
documento SIMILAR TO '[0-9]{8}'
 类似资料:
  • 我正在使用Spring和Hibernate,我得到了这个例外。以下是我试图获得的:我有User和UserSettings类,它们以OneToMany和ManyToOne注释为界,如下所示: 现在,我想为用户添加设置,我是这样做的: 问题来了:UserSettings中的用户持有旧设置和新设置的集合(设置,我刚刚创建并想要添加),但旧设置持有用户的集合,其中没有新设置。我想这就是为什么我会遇到异常,

  • 我有一个MathematicsAnswer引用的实体数学。如果对数学执行post请求,我会得到一个例外,即MathsAnswer上的字段不能为空。但我确实在球场上跳了起来。拜托,我需要这个解决方案<代码>java.sql。SQLIntegrityConstraintViolationException:列'question_id'不能为空。 sql架构: 实体类: MathsAnswers.jav

  • 问题内容: 我试图在我的注释表中插入值,但出现错误。俗话说,我不能添加或更新子行,我也不知道这意味着什么。我的架构如下所示: 我尝试执行的mysql语句如下所示: 我得到的错误看起来像这样: SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败(。,CONSTRAINT FOREIGN KEY()引用()删除无操作,更新无操作) 问题答案: 这仅表示在表 co

  • 我试图理解TopCoder上的问题: 它特别指定 数组的长度为n. 每个元素都是介于1和k之间的整数,包括整数。 每当A和B是数组的两个连续元素(按此顺序)时,我们有(A 我的问题是关于第一个示例的第三个约束: 答案不应该是4吗?数组{2,1}发生了什么?有3个数组可以按照上述约束生成,但是thre也是可以生成的第四个数组,即{2,1}。问题的任何地方都写着,我们只能有唯一的数字组合。为什么我们不

  • SQL CHECK 约束 CHECK 约束用于限制列中的值的范围。 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。 如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。 CREATE TABLE 时的 SQL CHECK 约束 下面的 SQL 在 "Persons" 表创建时在 "P_Id" 列上创建 CHECK 约束。CHECK 约束规定 "

  • 问题内容: 我遇到了一个项目有两次相同的.jar(对于我来说,是el-api.jar v2.1)两次的问题,因此,当我尝试使用Tomcat 6运行项目时,出现了以下错误堆栈。 我发现了 http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses- directive/ 但这没有用,因为解决方案影响了我项目的太多部分。 我无