Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle PL/SQL修改列默认长度属性_Oracle_Data Dictionary - Fatal编程技术网

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需要知道目录中默认的_值的长度,而不是默认值在表中的长度。我很好奇为什么您关心修改此列?我需要两个具有相同列定义结构的表。我很好奇您为什么要这样做是否要修改此列?我需要两个具有相同列定义结构的表。