首页
学习
活动
专区
圈层
工具
发布

【DB笔试面试498】当DML语句中有一条数据报错时,如何让该DML语句继续执行?

题目部分 在Oracle中,当DML语句中有一条数据报错时,如何让该DML语句继续执行? 答案部分 当一个DML语句运行的时候,如果遇到了错误,那么这条语句会进行回滚,就好像没有执行过。...----- 10 LHR@orclasm > SELECT COUNT(1) FROM T2; COUNT(1) ---------- 20 可以看到,由于插入的数据违反了唯一性约束...② 直接路径的INSERT或MERGE语句违反了唯一约束或唯一索引(注意:从Oracle 11g开始,已经取消了该条限制)。 ③ 更新操作违反了唯一约束或唯一索引。...LHR@orclasm > 可见,从Oracle 11g开始已经取消了该条限制。...constraint (LHR.PK_T1_A) violated 可以看到,如果更新操作导致了唯一约束或唯一索引冲突,是不会记录到错误记录表中的。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    新增非空约束字段在不同版本中的演进

    对于IS NOT NULL,type字段定义为NOT NULL,此SQL明显违反了表中的约束条件,则会在执行计划最上层增加一个NULL IS NOT NULL恒为假的条件,根本不需要真正执行这个SQL,...对于IS NULL,由于查询条件满足约束的条件,因此Oracle会做全表扫描,并且省略了type is not null的过滤,直接返回所有记录,就造成了type非空的假象。...原因就是11g新特性,新增一个有默认值的NOT NULL约束的字段,默认值不会像以前一样,插入每条记录中,而是会存储于一张数据字典表sys.ecol$,Oracle允许NOT NULL列默认值为NULL...根据错误提示,我们删除表中数据,再新增字段,可以增加,但不能再插入一条NULL至这个非空约束字段。 ?...至此,12c修复了11g中这个非空约束字段允许保存空值的bug,同时又支持11g新增默认值非空字段使用数据字典存储的特性,并且做了扩展支持,满足范围更大了。 小问题隐藏了大智慧。

    5.6K10

    【云和恩墨大讲堂】谈Oracle表新增字段的影响

    作者简介 刘晨,网名bisal,Oracle 10g/11g OCM,并国内首批Oracle YEP成员,博客:blog.itpub.net/bisal 很多人在做一些表设计时会留出几个reverse的字段...3. 11g以上的版本,如果新增字段没有默认值,也没有NOT NULL约束,则还是会使用ROW EXCLUSIVE模式锁,但由于不需要更新字段值,执行时间也是比较短。...1、对于IS NOT NULL,type字段定义为NOT NULL,此SQL明显违反了表中的约束条件,则会在执行计划最上层增加一个NULL IS NOT NULL恒为假的条件,根本不需要真正执行这个SQL...原因就是前面介绍过的11g新特性,新增一个有默认值的NOT NULL约束的字段,默认值不会像以前一样,插入每条记录中,而是会存储于数据字典表,Oracle允许NOT NULL列默认值为NULL,因此对于...根据错误提示,我们删除表中数据,再新增字段,可以增加,但不能再插入一条NULL至这个非空约束字段。

    3.3K70

    DDL操作提示了一个DML操作才会抛的ORA错误?

    )的NEED_PO字段,插入值“NEED_PO",很显然,7个长度的字符,插入1个长度的列,肯定会抛出异常, PARSING IN CURSOR #140623645148936 len=56 dep...“add column optimization”指的是11g对新增列的一种优化改进,当为表增加一个含默认值且设置了非空约束的列时,他是不会实际更新这张表的,而是在数据字典中增加该列信息,当用到这张表的该字段...,就会从数据字典中读取,一方面满足读取字段的需求,另一方面让增加字段的操作很快地执行,而在11g以前的版本,这种增加列操作,是需要实际更新这张表的字段,如果表的数据量非常大,则增加字段的操作会执行很久,...Database 11g 11.2.0.4.0 Oracle Database 11g Examples...Database 11g 11.2.0.4.0 Oracle Database 11g Examples

    91820

    【DB笔试面试751】在Oracle中,有哪几种类型的DG?

    对于Oracle 11g而言,可以直接从Active Database来创建,也可以基于10g的RMAN备份方式来创建。对于Oracle 10g而言,只能基于RMAN来创建。...在Oracle 11g之前的物理DG只能在MOUNT状态下进行恢复,虽然可以以只读方式打开备库,但是不能应用日志,而到了Oracle 11g时备库可以在打开的情况下执行恢复操作了,这称为ADG(Active...(三)快照DG(Snapshot DG) 当Physical Standby转换为Snapshot Standby时,它是一个完全可更新的Standby数据库。...00:00:00 ora_pmon_oradgss -- ORACLE_SID=oradg11g SYS@oradg11g > select db_unique_name,database_role...=oradgphy SYS@oradgphy > select db_unique_name,database_role,open_mode from v$database; DB_UNIQUE_NAME

    96920

    表中已存重复数据的情况,如何增加唯一性约束?

    ,可以看出,对于唯一性约束,Oracle会自动创建一个,普通的唯一索引,索引名称默认采用约束名。...Oracle Database should enforce the constraint, thereby determining the constraint state....简言之, 如果约束设置enabled,则会检查新插入或更新的数据是否符合约束条件。 如果约束设置disabled,则表中可以包含,违反约束的记录。...测试表现在有(a, b, c)唯一性约束,此时插入两条记录,且三个字段均为空值,分别用null和''两种方法,插入空值数据,是可以插入的,并未违反唯一性约束, SQL> insert into test...含有部分空值的复合唯一性约束的非空列上不能有相同的值。 总结: 1. 表中不存在重复的数据,可以直接创建唯一性约束,Oracle会自动创建唯一性索引,索引名称默认为约束名。 2.

    3K40

    主键、唯一键与唯一索引的区别

    SQL> select * from v$version; BANNER ——————————————————————————– Oracle Database 11g Enterprise Edition...USERS 此时,如果我们再试图在ID列上创建一个唯一索引,Oracle会报错,因为该列上已经存在一个唯一索引: SQL> create unique index idx_test_uk on...如果我们让主键约束或者唯一键约束失效,Oracle自动创建的唯一索引是否会受到影响? SQL> drop table test purge; Table dropped....SQL> select index_name, index_type, uniqueness from user_indexes; no rows selected 当主键约束或者唯一键约束失效时,Oracle...总结如下: (1)主键约束和唯一键约束均会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除; (2)主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空; (3)

    2.3K20

    DML错误日志表

    前天写了篇文章《表中已存重复数据的情况,如何增加唯一性约束?》,提到了存在唯一约束前提下,重复数据的问题。 很感谢建荣兄,他给我补充了两点, 1....对于含有null的复合索引,mysql和oracle的结果完全不同。 对于第二点,前同事曌哥,碰巧也说到了,MySQL下和Oracle的些许不同,这块我需要验证下,才能体会得更清楚些。...此时我们向TEST表插入一条重复的数据,自然会报错,违反唯一性约束的错误, SQL> insert into test values(3, 'a', 'a', 'a'); insert into test...,换句话说,这条不可能插入TEST表的数据,插入了ERR$_TEST表,另外ORA_ERR_MESG$字段显示的错误信息,正是不加log errors子句时,控制台直接返回的错误信息,我们猜出ORA_ERR_OPTYP...---- 接下来我们看看,Oracle官方的介绍,从《Oracle® Database PL/SQL Packages and Types Reference》文档可以检索DBMS_ERRLOG包。

    1.7K10

    MySQL基础SQL编程学习2

    2.NOT NULL : 指示某列不能存储 NULL 值; 如果不向字段添加值就无法插入新记录或者更新记录,否则会报错; 3.UNIQUE : 保证某列的每行必须有唯一的值; 在设置字段为UNIQUE...在每次插入新记录时自动地创建主键字段的值,注意Contraints字段必须是非空的; 基础实例: -- Constraints 约束实例 -- -- (1) MySQL 约束 : NOT NULL...撤销PRIMARY KEY约束时,不论约束条件为一列还是多列(由于PRIMARY KEY唯一性,MYSQL处理办法简单) CREATE DATABASE Demo; USE Demo; CREATE TABLE...b.禁用约束(子表的外键约束) ALTER TABLE 表名 disable constraint 约束名; 2)删除子表:可以删除子表或者数据不报错 #二、更新时 a.更新父表会违反约束 b.可以更新子表...c.没有针对约束的级联更新 #三、插入时 a.父表可以插入 b.子表插入会违反约束 DROP 语句 描述:通过使用 DROP 语句,可以轻松地删除索引、表和数据库(注意删除是立即执行,并且不会留下日志记录

    9.6K30

    Oracle 索引监控与外键索引

    Oracle 监控索引特性为我们提供了一个大致判断索引是否被使用的情形。之所以这么说,是因为在Oracle 10g 中收集统计信息时会导致索引被监控,此并非sql语句而产生。...而在11g则不会出现类型的情形。其次对于存在子表存在外键的情形,对于主表进行操作时是否会导致索引被监控呢?下面描述的是这个话题。...Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production --创建主表 SQL> create table ptb...1 | TABLE ACCESS BY INDEX ROWID| PTB | 1 | 12 | 1 (0)| 00:00:01 | |* 2 | INDEX UNIQUE...)     c、由上可知,对于外键索引未被监控到的情形,不可盲目的认为该索引无效而删除     d、对于子表不存在索引的情形,对于主表上的主键的更新以及删除主表中的一行都将导致整个子表被锁住

    1K20
    领券