Oracle PL/SQL修改列DEFAULT_LENGTH属性

Cat*_*lin 1 oracle data-dictionary

我在下面选择了属性DEFAULT_LENGTH:

SELECT 
  TABLE_NAME,
  COLUMN_NAME,
  DATA_DEFAULT,
  DEFAULT_LENGTH
FROM all_tab_columns
WHERE TABLE_NAME LIKE 'TEST2';
Run Code Online (Sandbox Code Playgroud)

为了更改DATA_DEFAULT,我使用了以下语法:

ALTER TABLE TEST2 MODIFY (COL1 DEFAULT 'en');
Run Code Online (Sandbox Code Playgroud)

如何使用类似的alter option语法DEFAULT_LENGTH进行更改?

谢谢!

APC*_*APC 5

"我如何使用类似的alter option语法DEFAULT_LENGTH进行更改?"

你不需要.DEFAULT_LENGTH源自DATA_DEFAULT的长度.

  • @Catalin这没关系,但你可以通过在两个表上运行`ALTER TABLE ... MODIFY(COL1 DEFAULT'en');`来使它们变得相同! (3认同)
  • @APC看起来VARCHAR2的DATA_DEFAULT包含用于包含值*definition*的两个单引号,因此数据默认值'ABC'的长度为5,0的长度为1,NULL的长度为4.有时可以是定义中的尾随空格,增加长度. (2认同)
  • @TonyAndrews - 你可能是对的.对于具有VARCHAR2(1000)列的表,更改表以将此列的默认值更改为NULL - DEFAULT_LENGTH变为4.然后再次更改以将默认值更改为`''`(空字符串,在Oracle中为与NULL相同 - 与标准相反),DEFAULT_LENGTH变为2.人们不得不想知道为什么Oracle需要知道目录中DEFAULT_VALUE值的长度,而不是表中显示的默认值的长度. (2认同)