Skip to content

适用虚谷数据库版本

v12.10.8



适用虚谷数据库版本

v12.10.8


自增列模式(def_identity_mode)

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

引入版本

v12.0.6

功能描述

用于控制自增列(identity)的插入值填充模式,以兼容MySQL的自增列处理方式。它是连接会话参数 IDENTITY_MODE 的默认值。

参数属性

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

使用场景说明

  1. 该参数控制表对象的自增列进行 INSERT 操作插入空值时的默认处理模式,若连接显式指定了 IDENTITY_MODE 会话参数,则优先使用会话参数指定的兼容模式。
def_identity_modeIDENTITY_MODE作用及影响
0DEFAULT
DEFAULT_IDENTITY_MODE
自增字段显式插入空值上报 E16005 异常。
1NULL_AS_AUTO_INCREMENT自增字段显式插入空值时使用自增值替换。
2ZERO_AS_AUTO_INCREMENT自增字段显式插入空值或 0 时使用自增值替换。

提示

  1. 在线修改 def_identity_mode 不影响已存在的连接,影响后续的新建连接。

示例

sql
-- 在线设置 def_identity_mode
SQL> SET def_identity_mode TO 0;

-- 在线查看 def_identity_mode
SQL> SHOW def_identity_mode

/*
 * 场景一:
 *  1. def_identity_mode = 0;
 *  2. SYSDBA 身份;
 */
SQL> CREATE TABLE t1(c1 INTEGER IDENTITY(1, 1));
SQL> INSERT INTO t1 VALUES(NULL); /* 上报异常 E16005 字段C1不能取空值 */

/*
 * 场景二:
 *  1. def_identity_mode = 1;
 *  2. SYSDBA 身份;
 */
SQL> CREATE TABLE t1(c1 INTEGER IDENTITY(1, 1));
SQL> INSERT INTO t1 VALUES(NULL); /* 执行成功 */
SQL> INSERT INTO t1 VALUES(0); /* 执行成功 */
SQL> SELECT * FROM t1;

/*
 * 返回结果集:
 * +----+
 * | C1 |
 * +----+
 * |  1 |
 * |  0 |
 * +----+
 */

 /*
  * 场景三:
  *  1. def_identity_mode = 2;
  *  2. SYSDBA 身份;
  */
SQL> CREATE TABLE t1(c1 INTEGER IDENTITY(1, 1));
SQL> INSERT INTO t1 VALUES(NULL); /* 执行成功 */
SQL> INSERT INTO t1 VALUES(0); /* 执行成功 */
SQL> SELECT * FROM t1;

/*
 * 返回结果集:
 * +----+
 * | C1 |
 * +----+
 * |  1 |
 * |  2 |
 * +----+
 */