标签: check-constraints

MySQL是否支持检查约束?

MySQL是否支持检查约束?

我可以在MySQL中执行以下脚本而不会出错.

ALTER TABLE  EMP_DB_DESIGN_EXCEL  ADD (
   CONSTRAINT CHK_EMP_IS_ACTIVE CHECK (IS_ACTIVE IN ('Y','N')));
Run Code Online (Sandbox Code Playgroud)

但是,如果我查询它没有反映:

 SELECT * FROM information_schema.TABLE_CONSTRAINTS T where t.table_name='EMP_DB_DESIGN_EXCEL';
Run Code Online (Sandbox Code Playgroud)

mysql check-constraints

4
推荐指数
1
解决办法
2462
查看次数

Hibernate非负值约束

我有桌子,下面的片段.

    package test;

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.persistence.UniqueConstraint;

    @Entity
    @Table(uniqueConstraints = { @UniqueConstraint(columnNames = "code")},
           name = "coupons")
    public class Coupon implements  Serializable {

        private static final long serialVersionUID = 5534534530153298987L;

        @Id
        @GeneratedValue
        @Column(name = "id")
        private long id;

        @Column(name = "available_count")
        private Integer availableCount = 1;

        public Integer getAvailableCount() {
            return availableCount;
        }

        public void setAvailableCount(Integer availableCount) {
            this.availableCount = availableCount;
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何制约只允许availableCount非负面?

java database hibernate check-constraints

4
推荐指数
1
解决办法
4387
查看次数

如何重新检查sql server中表中已有数据的主/外键约束?

我在SQL Server 2005中有一个带有外键的表,它禁用了大量数据加载,然后重新启用:

例:

alter table table1 nocheck constraint fk_1
go
lots of inserts...
go
alter table table1 check constraint fk_1
go
Run Code Online (Sandbox Code Playgroud)

现在,问题是:有没有办法重新检查这个刚刚插入的数据?

sql-server foreign-keys check-constraints

4
推荐指数
1
解决办法
786
查看次数

Oracle:如何使用case来制定复杂约束

以下条件约束根本不起作用.是否有可能以一种有效的方式制定?

ALTER TABLE eni_trasc_voci_pwr_fatt
ADD CONSTRAINT tvp_constraint_1 CHECK (
CASE WHEN TVP_CODICE_ASSOGGETAMEN = '-' THEN tvp_regione IS NULL
END);
Run Code Online (Sandbox Code Playgroud)

oracle check-constraints

4
推荐指数
1
解决办法
9843
查看次数

如果根据Firebird/Interbase中的检查约束它们是否有效,我如何在表之间复制记录?

我想将临时表中的一堆记录复制到目标表.问题是某些记录可能违反了目标表中的检查约束,因此我想插入可能的所有内容,并在其他地方为无效记录生成错误日志.

如果我执行:

INSERT INTO target_table
  SELECT ... FROM temp_table
Run Code Online (Sandbox Code Playgroud)

如果任何记录违反任何约束,则不会插入任何内容.我可以制作一个循环并逐个手动插入,但我认为性能会更低.

database firebird interbase check-constraints

4
推荐指数
1
解决办法
2196
查看次数

具有异常的PostgreSQL唯一约束

我有一张桌子:

CREATE TABLE dbo."TransportInteraction"
(
  "Id" bigint NOT NULL DEFAULT nextval('dbo."TransportInteraction_Id_seq"'::regclass),
  "Message" character varying(256),
  "TransportActionId" integer NOT NULL,
  "TimeCreated" timestamp without time zone NOT NULL,
  "TimeInserted" timestamp without time zone NOT NULL,
  "TaskId" bigint
)
Run Code Online (Sandbox Code Playgroud)

通常,此表是对任务的映射操作.TransportActionId是一种integer定义行动的类型.某些操作类型对于每个任务必须是唯一的,而有些则不是.

所以我需要一个类型约束:
UNIQUE ("TaskId", "TransportActionId")适用于所有动作TransportActionId != (2||3 || 4).

所以所有行动除了那些ActionId=2,3 or 4.

有任何想法吗?

sql postgresql indexing check-constraints unique-constraint

4
推荐指数
1
解决办法
1024
查看次数

PostgreSQL:违反检查约束。失败行包含

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

错误:关系“ empleados”的新行违反了检查约束“ ck_empleados_documento”详细信息:失败行包含(13,22222222,f,Lopez,Ana,Colon 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');
Run Code Online (Sandbox Code Playgroud)

这是表的结构:

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), …
Run Code Online (Sandbox Code Playgroud)

sql postgresql check-constraints pgadmin

4
推荐指数
1
解决办法
7152
查看次数

SQL Server中的精确长度列

有没有办法让列具有完全如此多的字符?我有一个152个字符的字符串,并希望列只接受长度为152的值,而不是151,而不是153.我知道char可以处理溢出,但最小版本呢?

database sql-server check-constraints

4
推荐指数
1
解决办法
442
查看次数

一个检查约束或多个检查约束?

关于是否更少检查约束更好或更多的任何建议?如果有的话,他们应该如何分组?

假设我有3列VARCHAR2(1 BYTE),每列都是'T'/'F'标志.我想为每个列添加一个检查约束,指定只IN ('T', 'F')允许使用字符.

我应该有3个单独的检查约束,每列一个:

COL_1 IN ('T', 'F')

COL_2 IN ('T', 'F') 

COL_3 IN ('T', 'F')
Run Code Online (Sandbox Code Playgroud)

或者一个检查约束:

COL_1 IN ('T', 'F') AND COL_2 IN ('T', 'F') AND COL_3 IN ('T', 'F')
Run Code Online (Sandbox Code Playgroud)

我的想法是最好将这三个分开,因为列在逻辑上彼此无关.唯一的情况是我会检查一个以上列的检查约束,如果一个值与另一个值之间存在某种关系,例如:

(PARENT_CNT > 0 AND PRIMARY_PARENT IS NOT NULL) OR (PARENT_CNT = 0 AND PRIMARY_PARENT IS NULL)
Run Code Online (Sandbox Code Playgroud)

sql oracle database-design check-constraints

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

检查 Postgresql 中条件的约束

我正在尝试创建一个检查约束以防止人们将 a 更改sales_status3除非progression_status80

我以为是

ALTER TABLE mytable 
   ADD CONSTRAINT sales_status_cant_be_3_for_nonprogressed 
   CHECK (((sales_status = 3 ) or (progression_status < 80)))
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个错误,指出某些行违反了它。当我运行查询时

select * from mytable where sales_status = 3 and progression_status < 80
Run Code Online (Sandbox Code Playgroud)

我没有得到预期的结果。但是我似乎无法使检查约束起作用

sql postgresql check-constraints

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