Skip to content

其他功能

修改列定义时,字段类型一致的变更不报错(兼容Oracle)

  • 原有状态

    sql
    CREATE TABLE test_tab(f1 VARCHAR(10));
    
    ALTER TABLE test_tab MODIFY f1 VARCHAR(10);
    Error: [E16016] 字段F1的新定义与旧定义完全一致

    当配置兼容模式为Oracle时(compatible_mode=oracle),错误16016级别设置为警告,不以错误方式返回客户端。

  • 当前版本状态

    sql
    SET COMPATIBLE_MODE TO ORACLE;
    CREATE TABLE test_tab(f1 VARCHAR(10));
    
    ALTER TABLE test_tab MODIFY f1 VARCHAR(10);
    Warnning: [E16016] 字段F1的新定义与旧定义完全一致

变更表对象定义的操作语法(兼容Oracle)

  • 修改列支持使用MODIFY关键字,兼容原来的的ALTER COLUMN。
  • 支持默认值的ON NULL功能。

示例:

sql
CREATE TABLE test_tab(a int);
--使用MODIFY修改字段
ALTER TABLE test_tab MODIFY a SMALLINT DEFAULT 1;
INSERT INTO test_tab VALUES(DEFAULT);
--使用ALTER COLUMN修改字段
ALTER TABLE test_tab ALTER COLUMN a INT DEFAULT ON NULL 10;
INSERT INTO test_tab VALUES(DEFAULT);

SELECT * FROM test_tab;
A |
------------------------------------------------------------------------------
1 |
10 |