【问题标题】:How can i add a default null in Oracle Database如何在 Oracle 数据库中添加默认空值
【发布时间】:2018-10-04 16:27:01
【问题描述】:

大家好,我是数据库新手,我第一次尝试添加外键时遇到以下错误 ORA-01735: invalid ALTER TABLE option 当我用谷歌搜索它时,它发现类似DEFAULT NULL: 但是当我使用它时,我得到以下错误代码RA-00904: : invalid identifier

我的 alter Table 是这样的

alter table car
add constraint priceCar DEFAULT NULL foreign key (note) references priceCode(note) DEFAULT NULL;

我不知道我做错了什么这是我第一次使用数据库 Oracle

【问题讨论】:

  • 默认值是列定义的一部分,而不是引用约束;但无论如何,大多数数据类型默认为 null。你为什么认为你需要这个;您的搜索是针对 Oracle 的吗?
  • @AlexPoole Yes spefcif to oracle,这是第一个出现的东西我是新手,我不太了解它
  • 解释@AlexPoole 的注释 - 为什么你认为你需要一个 DEFAULT NULL 子句?让我们从你的 FK 约束定义中分离出来
  • @thatjeffsmith 我还应该或可以使用什么
  • @user9691016 您不需要为列定义默认空值 - 默认情况下已经存在。如果您想将零长度 lob docs.oracle.com/cd/B28359_01/server.111/b28286/… 默认为 EMPTY_CLOB 或 BLOB()

标签: database oracle foreign-keys alter-table


【解决方案1】:

添加约束只是:

alter table car
add constraint priceCar foreign key (note) references priceCode(note);

假设相关列已存在于两个表中并且是相同的数据类型,并且是priceCode 中的主键或唯一键。

列的默认值是一个完全不相关的问题,因为这可能是一个数字列,所以无论如何它都会默认为 null。您可以向列定义(而不是约束)显式添加默认空子句,但您不需要。

使用组合表格的快速演示:

create table pricecode(note number primary key);

Table PRICECODE created.

create table car (id number, note number);

Table CAR created.

alter table car
add constraint priceCar foreign key (note) references priceCode(note);

Table CAR altered.

insert into car (id) values (1);

1 row inserted.

然后:

select * from car;

        ID       NOTE
---------- ----------
         1           

表明 note 默认为 null 而无需您明确设置(而且它也没有抱怨它不匹配任何主键值)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2010-12-06
    • 2019-09-07
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多