精华内容
下载资源
问答
  • 我的程序是有一个定时任务获取文件内容(json),并将内容转成实体用saveOrUpdate方法保存,然后删除文件,不知道为什么会报违法主键唯一约束的错误,再补充一点,我这个是文件处理是异步进行的,不知道有没有影响。
  • 用saveOrUpdate往表里面插入数据,结果抛出异常报违反主键唯一: org.hibernate.exception.ConstraintViolationException: Duplicate entry '1-2015-11-02' for key 'PRIMARY' at org.hibernate.exception.internal...
  • 这部分内容包括了非空约束唯一约束主键约束、外键约束、用户自定义约束。每一种约束都有着其独特的功能。那么到底什么是约束呢?这篇文章就是来解答这个问题。定义约束1. 数据库中的约束类型。– 非空约束(NOT...

    473c276f0ee0fde82e05e6153a1270c0.png

    约束是Oracle数据库非常重要的内容。这部分内容包括了非空约束、唯一性约束、主键约束、外键约束、用户自定义约束。每一种约束都有着其独特的功能。那么到底什么是约束呢?这篇文章就是来解答这个问题。

    定义约束

    1. 数据库中的约束类型。

    – 非空约束(NOT NULL)

    – 唯一性约束(UNIQUE)

    – 主键约束(PRIMARY KEY)

    – 外键约束(FOREIGN KEY)

    – 用户自定义约束(CHECK)

    f115be7add92768fd40eadaeef663bf4.png

    1.1 定义 约束原则

    创建一个约束:在创建表的同时,或者在创建表之后都可以定义约束。可以给约束起名

    字,但是约束名不能相同,必须是唯一的。如果没有为约束起名字,Oracle 服务器将用默

    认格式 SYS_Cn 产生一个名字,这里 n 是一个唯一的整数,所以约束名是唯一的。

    定义 NOT NULL

    836996305fcadf9facf4192808a3370e.png

    2.1 创建表时定义 NOT NULL 约束

    2.1.1 示例

    create table dept80(id number,name

    varchar2(20) not null, salary number

    constraint dept80_notn not null);

    2.2 修改表定义 NOTNULL 约束

    2.2.1 示例

    alter table dept80 modify location_id not null;


    3 定义 UNIQUE 约束

    53346b8a7e5fd9110194cc1c0ea3e826.png

    3.1 创建表时定义 UNIQUE 约束

    3.1.1 示例

    create table dept90(id number constraint

    dept90_uk unique,name varchar2(20));

    3.2 修改表定义 UNIQUE 约束

    3.2.1 示例

    alter table dept90 modify(name unique);


    4 定义 PRIMARY KEY 约束

    a328b668664adddd41ec15c1e06c70a5.png

    4.1 创建表时定义 PRIMARY KEY 约束

    4.1.1 示例

    create table dept70(id number constraint dept70_pk primary key);

    4.2 修改表定义 PRIMARY KEY 约束

    4.2.1 示例

    alter table dept60 modify(id constraint dept60_pk primary key);

    4.3 创建联合主键

    4.3.1 示例

    create table dept50(id number,name varchar2(20),constraint dept50_pk primary

    key(id,name));


    5 定义 FOREIGN KEY 。

    645c025306f681bf0d0a600554210d62.png

    5.1 创建表时定义 FOREIGN KEY

    5.1.1 示例

    create table dept40(id number,d_id number,constraint dept40_fk foreign key(d_id)

    references dept60(id));

    5.2 修改表定义 FOREIGN KEY

    5.2.1 示例

    alter table dept50 add constraint dept50_fk foreign key(d_id) references

    dept60(id);


    6 定义 CHECK 约束。

    51d6d4022a4ae4033d9efd3e4ee529ea.png

    6.1 创建表时定义 CHECK 约束

    6.1.1 示例

    create table dept30(id number,salary number(8,2) constraint dept30_ck check

    (salary > 1000));

    6.2 修改表定义 CHECK 约束

    6.2.1 示例

    alter table dept50 add constraint dept50_ck check(salary > 1000);


    7 禁用与启用 约束

    7.1 查看约束

    32c3875902a876188ad6c266b2da2af9.png

    7.1.1 示例

    select constraint_name,constraint_type,search_condition from user_constraints where

    table_name= 'DEPT40';

    7.2 禁用约束

    75e76e57b7f69459678683e44725fc21.png

    7.2.1 示例

    alter table dept40 disable constraint dept40_ck;

    级联禁用

    alter table dept60 disable constraint dept60_pk cascade;

    7.3 启用约束

    a7882921a268c73fe1596a2862c694fd.png

    7.3.1 示例

    alter table dept40 enable constraint dept40_ck;

    展开全文
  • 今天在写一个表维护页面时,表里已设置sequence 但是保存时仍报违反主键唯一约束的错误,经过排查,原来在表创建好的时候,由数据库直接导入了部分数据,导致了sequence的开始自增序列不为当前ID最大值,故要从新...
       今天在写一个表维护页面时,表里已设置sequence 但是保存时仍报违反主键唯一约束的错误,经过排查,原来在表创建好的时候,由数据库直接导入了部分数据,导致了sequence的开始自增序列不为当前ID最大值,故要从新设置sequence的自增起始值,方法如下:
    

    第一步:删除原有的sequence,如下:

    DROP SEQUENCE seq_sequencename;

    第二步: 重新创建sequence并设置其自增开始值,如下:

    CREATE SEQUENCE seq_sequencename
                INCREMENT BY 1  -- 每次加几个  
                START WITH 73      -- 从73开始计数  
                NOMAXVALUE        -- 不设置最大值  
                NOCYCLE               -- 一直累加,不循环  
                CACHE 10;

    至此,问题结局,共勉……

    展开全文
  • 主键约束(primary key) • 每个表中只能有一个主键 • 主键值须非空不重复 • 可设置单字段主键,也可设置多字段联合主键 联合主键中多个字段的取值完全相同时,才违反主键约束 • 添加主键约束: 列级添加主键约束...

    b9abe56f21a615d729ffc1cdda32ea15.png

    2048a8539bfa36b63658199f22b3fc35.png

    主键约束(primary key) • 每个表中只能有一个主键 • 主键值须非空不重复 • 可设置单字段主键,也可设置多字段联合主键 联合主键中多个字段的取值完全相同时,才违反主键约束 • 添加主键约束: 列级添加主键约束:create table ( primary key,…… ); 表级添加主键约束:create table ( ,...... ,[constraint 主键约束名] primary key(字段名1[,字段名2,...字段名n]));

    唯一约束(unique) • 指定字段的取值不能重复,可以为空,但只能出现一个空值 • 添加唯一约束: 列级添加唯一约束:create table ( unique,…… ); 表级添加唯一约束:create table ( ,[constraint 唯一约束名] unique (字段名1[,字段名2...字段名n])); 自动增长列(auto_increment) • 指定字段的取值自动生成,默认从1开始,每增加一条记录,该字段的取值会加1 • 只适用于整数型,配合主键一起使用 • 创建自动增长约束:create table ( primary key auto_increment,…… );

    非空约束(not null) • 字段的值不能为空 • 创建非空约束:create table ( not null,…… ); 默认约束(default) • 如果新插入一条记录时没有为该字段赋值,系统会自动为这个字段赋值为默认约束设定的值 • 创建默认约束:create table ( default value,…… ); 外键约束(foreign key) 在一张表中执行数据插入、更新、删除等操作时,DBMS都会跟另一张表进行对照,避免不规范的操作,以确保数据存储的完整性。 • 某一表中某字段的值依赖于另一张表中某字段的值 • 主键所在的表为主表,外键所在的表为从表 • 每一个外键值必须与另一个表中的主键值相对应 • 创建外键约束:create table ( ,…… ,[constraint 外键约束名] foreign key(字段名) references (主键字段));

    展开全文
  • 在做一个移植的时候报错,违反唯一约束,检查表结构发现只有主键才有唯一约束,但是表结构是从oracle直接移植过来到达梦数据库上面的,主键不会出现相同的值,怎么会报错违反唯一约束呢?检查数据发现是主键...

    在做一个移植的时候报错,违反唯一性约束,检查表结构发现只有主键才有唯一性约束,但是表结构是从oracle直接移植过来到达梦数据库上面的,主键不会出现相同的值,怎么会报错违反唯一性约束呢?检查数据发现是主键字段数据末尾含有空格导致的。

    比如在oracle新建一个test表,字段C1作为主键 ,如下:
    在这里插入图片描述
    插入数据时可以这样写:

    INSERT INTO TEST VALUES('A','1')
    INSERT INTO TEST VALUES('A ','1')
    INSERT INTO TEST VALUES(' A','1')
    

    在这里插入图片描述
    这样都能顺利插入表中而不违反主键的约束,但是达梦数据库默认会去掉数据末尾的空格,违反唯一约束性。

    解决办法:
    修改dm.ini配置文件设置BLANK_PAD_MODE=1即可兼容这一问题。

    展开全文
  • --建立类似复合主键唯一约束 ALTER TABLE t ADD CONSTRAINT UNIQUE_a_b UNIQUE(a,b) --建立前查找违反多列唯一约束的记录 SELECT tOUt.id, tOUt.a, tOUt.b FROM t tOut WHERE tOut.id NOT IN (SELECT TOP 1 ...
  • 问题再现问题描述在oracle数据库中明明主键已经删除了,但是插入数据的时候还是报错违反唯一约束解决方案引起该现象的原因是因为当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一...
  • 今天在写了一个行级update触发器,对表进行插入的时,触发触发器对扩展表做插入操作。遇到的问题不是一般的多。 1)在触发器的匿名块部分中用了 insert into tab_a(col_a1) select col_b1 from tab_b where col_b1= ...
  • 初次向表中插入数据时候不会报错,再次执行时会报错违反唯一约束,因为序列每次是从1开始的,再次插入数据时候数据表中已经有数据了,还从1开始就会报错。 解决方案:从数据表中已有数据的行数开始自增 ...
  • 转自 58沈剑今天和大家简单聊聊MySQL的约束主键唯一索引约束:PRIMARY KEY and UNIQUE Index Constraints文章不长,保证有收获。触发约束检测的时机:insertupdate当检测到违反约束时,不同存储引擎的处理动作是不...
  • 就是支持Excel导入的功能,导入第二次同模板不同数据时,报错,违反唯一约束。就死活用不了了,重启Tomcat才能恢复使用。但只能到一个文件 分析需要重启Tomcat,应该是缓存的原因 原因分析完所有代码,临时数据...
  • 知识点太多太杂了,随机一个:十、 定义约束1 数据库中的约束类型– 非空约束(NOT NULL) – 唯一约束(UNIQUE) – 主键约束(PRIMARY KEY) – 外键约束(FOREIGN KEY) – 用户自定义约束(CHECK)1.1定义约束原则创建一...
  • ORA-00001: 违反唯一约束条件 这一个报错相信大家在插入数据时还是经常遇到的,尤其是在测试环境。 但是今天我在处理一个生产问题的时候再次遇到这个报错时有点奇怪: 1.该表(记为表A)的主键是数据库序列生成的,...
  • 今天和大家简单聊聊MySQL的约束主键唯一索引约束:PRIMARY KEY and UNIQUE Index Constraints文章不长,保证有收获。触发约束检测的时机:●insert●update当检测到违反约束时,不同存储引擎的处理动作是不一样的...
  • 总结,对于主键唯一索引约束: • 执行insert和update时,会触发约束检查 • InnoDB违反约束时,会回滚对应SQL • MyISAM违反约束时,会中断对应的SQL,可能造成不符合预期的结果集 • 可以使用 insert … on ...
  • 违反唯一条件约束

    2020-03-13 10:08:31
    今天遇到了一个问题,违反唯一条件约束,根据后台报错信息找到库.表,然后根据对应插入的数据(一般是根据对应表中主键插入)查找是否有这条数据,有的话说明这条数据已经存在,然后可以删除这条数据,在做一次数据...
  • MySQL主键唯一索引约束 触发约束检测的时机: insert update 当检测到违反约束时,不同存储引擎的处理动作是不一样的。 如果存储引擎支持事务,SQL会自动回滚。 例子: create table t1 ( id int(10) primary ...
  • 今天,在自己初出茅庐做项目时遇到急需处理情况,那就是在多人同时提交数据时,插入ID时,报错:违反唯一约束条件。我之前处理ID方法是采用ID+1 查询 再插入的方法,这种情况配合事务时就会报错。解决方法,采用序列...
  • 14-SQLite之主键唯一约束

    万次阅读 2015-05-25 21:22:42
    永远不要更新主键,否则违反对用户没有意义原则 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等 在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录 语法:...
  • 一个非常奇怪的违反唯一约束的问题:我在一个表中用下面的语句进行update时报违反唯一约束的错误,如下update yield.at_lotcalendar set enddate=to_date('24-12-2006 23:59:59','DD-MM-YYYY HH24:MI:SS') where...
  • 今天和大家简单聊聊MySQL的约束主键唯一索引约束:PRIMARY KEY and UNIQUE Index Constraints文章不长,保证有收获。触发约束检测的时机:●insert●update当检测到违反约束时,不同存储引擎的处理动作是不一样的...
  • SQL语句如下 create table user_role( userid number(10), rid number(10), constraint pk_u_r primary key(userid,rid) ...如果插入的userid和rid和已有的一条记录都一致就会违反唯一约束,拒绝插入
  • 但是服务器后台一直报主键唯一约束错误。 问了DBA说是数据库 RAC(Real Application Clusters)集群部署方案。说序列生成的主键肯定不会重复(存在疑惑),理论上某个服务器宕机还是会存在重复的(待确认,还没有...
  • 数据表的主键唯一,约束条件中的开始值小于数据表的最大记录数值,主键ID冲突,所以出现“ORA-00001: 违反唯一约束条件” 1. 查询表中最大记录数值 select max(to_number(主键ID)) from 表名 2. 修改约束条件的开始...
  • 实际开发中,在创建表主键约束的时候,通常会级联创建唯一索引。... 可以发现主键被删除了,但是唯一索引依旧存在,因此如果插入重复的数据,还是会报违反约束的错误 处理方法:  在删除约束的时候需要显示的

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 225
精华内容 90
关键字:

违反主键唯一约束