gpt4 book ai didi

sql - 显式地将列默认为 NULL

转载 作者:行者123 更新时间:2023-12-03 21:32:40 25 4
gpt4 key购买 nike

如何使列默认为 NULL?

我想在默认情况下将 Oracle SQL Developer 中的一列声明为 NULL。我知道这样一个事实,如果我根本没有定义任何默认值,那么 NULL 将是默认值。但是,如果我想明确地将 NULL 定义为默认值,我该如何定义呢?

-- 1: Does not work.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6) DEFAULT null
);

-- 2: Does not work.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6) DEFAULT NULL
);

-- 3: Does not work.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6) DEFAULT (null)
);

-- 4: This works.
ALTER TABLE MY_TABLE ADD (
MY_COLUMN TIMESTAMP(6)
);

在情况 1-3 中,默认值将是一个字符串(“ NULL”、“ null”或“ (null)”),但不是实际的 NULL 值。那么,我在这里错过了什么?

//编辑:

情况(a) 和(b) 对应于情况1 和2。在SQL Developer 中显示 nullNULL 的文本值。情况 (c) 对应于情况 4,其中显式设置了真实的 (null) 值。屏幕截图是在 SQL Developer 中表的“列”选项卡上截取的。

SQL Developer http://s1.postimg.org/fclraa0dp/SQL_Developer.png

最佳答案

由于 nullNULL(null) 是一回事,我不明白问题是什么。

这也不是 SQL Developer 的“问题”。

Oracle 只是简单地存储您在系统目录中编写的默认表达式。 SQL Developer 只是显示它。

假设以下语句:

create table my_table (id integer);
alter table my_table add my_column_1 timestamp(6) default null;
alter table my_table add my_column_2 timestamp(6) default null;
alter table my_table add my_column_3 timestamp(6) default (null);

然后
select column_id, column_name, data_type, data_default
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id;

将返回以下内容:
COLUMN_ID | COLUMN_NAME | DATA_TYPE    | DATA_DEFAULT
----------+-------------+--------------+-------------
1 | ID | NUMBER |
2 | MY_COLUMN_1 | TIMESTAMP(6) | NULL
3 | MY_COLUMN_2 | TIMESTAMP(6) | null
4 | MY_COLUMN_3 | TIMESTAMP(6) | (null)

当您从系统中提取 DDL 时,您又会确切地知道为什么要这样写:
select dbms_metadata.get_ddl('TABLE', 'MY_TABLE', user)
from dual;

返回:
  CREATE TABLE "TK_HIRAC"."MY_TABLE" 
( "ID" NUMBER(*,0),
"MY_COLUMN_1" TIMESTAMP (6) DEFAULT NULL,
"MY_COLUMN_2" TIMESTAMP (6) DEFAULT null,
"MY_COLUMN_3" TIMESTAMP (6) DEFAULT (null)
) SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
TABLESPACE "USERS"

关于sql - 显式地将列默认为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32713498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com