You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中无法为DEFAULT约束命名?需后续删除该约束

Oracle中设置可删除的字段默认值的正确方式

你遇到的问题是Oracle不支持用CONSTRAINT关键字为DEFAULT属性命名——DEFAULT属于列的基础属性,而非CHECK/PRIMARY KEY这类标准约束类型,所以你的写法违反了Oracle语法规则,才会抛出ORA-02253错误。

正确的建表语句

要设置默认值同时保留后续删除的能力,直接将DEFAULT作为列属性定义即可,无需为它添加CONSTRAINT命名:

CREATE TABLE Article(
    ArCode char(5) CONSTRAINT arcode_chk check(ArCode like 'A%') CONSTRAINT ar_code_pk primary key, 
    ArName varchar2(20) CONSTRAINT ar_name_nn not null, 
    Rate number(8,2),
    Quantity number(4) DEFAULT 0 CONSTRAINT qty_chk check(Quantity>=0),
    Classs char(1) CONSTRAINT cls_chk check(Classs in('A','B','C'))
);

后续删除默认值的方法

由于DEFAULT是列属性,删除时不需要约束名,直接通过ALTER TABLE将列的默认值设为NULL即可(Oracle中无默认值等价于默认值为NULL):

ALTER TABLE Article MODIFY Quantity DEFAULT NULL;

验证默认值配置

如果需要确认列的默认值信息,可查询数据字典视图:

SELECT COLUMN_NAME, DATA_DEFAULT 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = 'ARTICLE' 
  AND COLUMN_NAME = 'QUANTITY';

内容的提问来源于stack exchange,提问作者Mohd Gaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:06:20