Oracle PL/SQL修改列默认长度属性
我在下面的选择中有属性默认长度:Oracle PL/SQL修改列默认长度属性,oracle,data-dictionary,Oracle,Data Dictionary,我在下面的选择中有属性默认长度: SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT, DEFAULT_LENGTH FROM all_tab_columns WHERE TABLE_NAME LIKE 'TEST2'; 对于更改数据默认值,我使用了以下语法: ALTER TABLE TEST2 MODIFY (COL1 DEFAULT 'en'); 如何使用类似的alter option语法默认长度进行更改 谢谢 “如何使用类似的al
SELECT
TABLE_NAME,
COLUMN_NAME,
DATA_DEFAULT,
DEFAULT_LENGTH
FROM all_tab_columns
WHERE TABLE_NAME LIKE 'TEST2';
对于更改数据默认值,我使用了以下语法:
ALTER TABLE TEST2 MODIFY (COL1 DEFAULT 'en');
如何使用类似的alter option语法默认长度进行更改
谢谢
“如何使用类似的alter option语法默认长度进行更改?”
你不需要。默认长度是从默认数据的长度中派生出来的
“如何使用类似的alter option语法默认长度进行更改?”
你不需要。默认长度是从默认数据的长度中派生出来的 如本文所示:(obvs,我太慢了!*{;-)@Boneist-有趣的是,
default\u length
的值大于data\u default
值的长度。在您的livesql示例中,它是+2,在我的数据库中(我无法从中剪切粘贴)它是+3。你知道为什么吗?@APC似乎VARCHAR2的默认数据包含两个单引号,用于括起值定义,因此默认数据“ABC”的长度为5,0的长度为1,NULL的长度为4。有时定义中可能会有一个尾随空格,增加长度。@Catalin这真的没关系,但y您可以通过在两个表上运行ALTER TABLE…MODIFY(COL1 DEFAULT'en');
使它们相同!@TonyAndrews-您可能是正确的。对于具有VARCHAR2(1000)列的表,更改该表以将该列的默认值更改为NULL-默认长度变为4。然后再次更改以将默认值更改为“”
(空字符串,在Oracle中与NULL相同-与标准相反),默认的_长度变为2。人们不禁要问,为什么Oracle需要知道目录中默认_值的长度,而不是表中显示的默认值的长度。如下所示:(obvs,我太慢了!*{;-)@Boneist-有趣的是,default\u length
的值大于data\u default
值的长度。在您的livesql示例中,它是+2,在我的数据库中(我无法从中剪切“n”粘贴)它是+3。你知道为什么吗?@APC似乎VARCHAR2的默认数据包含两个单引号,用于括起值定义,因此默认数据“ABC”的长度为5,0的长度为1,NULL的长度为4。有时定义中可能会有一个尾随空格,增加长度。@Catalin这真的没关系,但y您可以通过在两个表上运行ALTER TABLE…MODIFY(COL1 DEFAULT'en');
使它们相同!@TonyAndrews-您可能是正确的。对于具有VARCHAR2(1000)列的表,更改该表以将该列的默认值更改为NULL-默认长度变为4。然后再次更改以将默认值更改为“”
(空字符串,在Oracle中与NULL相同-与标准相反),并且默认的_长度变为2。人们不禁要问,为什么Oracle需要知道目录中默认的_值的长度,而不是默认值在表中的长度。我很好奇为什么您关心修改此列?我需要两个具有相同列定义结构的表。我很好奇您为什么要这样做是否要修改此列?我需要两个具有相同列定义结构的表。