Skip to content

适用虚谷数据库版本

v12.10.8



适用虚谷数据库版本

v12.10.8


唯一值检测方式(check_unique_mode)

📄字数 1.1K
👁️阅读量 加载中...

引入版本

v11.0.0

功能描述

唯一值检测方式。

参数属性

属性属性值
参数类型INTEGER
默认值2
取值范围[1, 2]
影响范围系统级
修改方式在线修改,立即生效

使用场景说明

  1. 该参数控制系统进行唯一值检测的方式。
check_unique_mode作用及影响
1系统进行 INSERT 或 UPDATE 时,不进行唯一值约束预检测,待操作执行结束后再进行
唯一值约束检测,检测不通过则上报 E13001 异常。
2系统进行 INSERT 或 UPDATE 时,进行唯一值约束预检测。
  1. check_unique_mode 与 delay_check_unique 共同控制系统进行唯一值检测的行为,它们的控制矩阵图如下:
-check_unique_mode = 1check_unique_mode = 2
delay_check_unique = trueUPDATE 场景延迟检测,INSERT 场景不进行预检测。UPDATE 场景延迟检测,INSERT 场景进行预检测。
delay_check_unique = falseINSERT 和 UPDATE 场景不进行预检测。INSERT 和 UPDATE 场景均进行预检测。

注意

  1. 使用 REPLACE INTO 功能时,check_unique_mode 只能设置为 2。

示例

sql
-- 在线修改 check_unique_mode
SQL> SET check_unique_mode TO 2;

-- 在线查看 check_unique_mode
SQL> SHOW check_unique_mode;

/*
 * 场景一:
 *   1. delay_check_unique = false;
 *   2. check_unique_mode = 1;
 *   3. auto_commit = true;
 */
 SQL> CREATE TABLE t1(c1 INTEGER);
 SQL> CREATE UNIQUE INDEX idx ON t1(c1);
 SQL> INSERT INTO t1 VALUES(1)(2);
 SQL> INSERT INTO t1 VALUES(1); -- 插入数据后,维护索引时报 E13001 违反唯一值约束;

 /*
 * 场景二:
 *   1. delay_check_unique = false;
 *   2. check_unique_mode = 2;
 *   3. auto_commit = true;
 */
 SQL> CREATE TABLE t1(c1 INTEGER);
 SQL> CREATE UNIQUE INDEX idx ON t1(c1);
 SQL> INSERT INTO t1 VALUES(1)(2);
 SQL> INSERT INTO t1 VALUES(1); -- 插入数据前进行预检测,报 E13001 违反唯一值约束;