【问题标题】:Alter table in database throwing error in SQL Developer在 SQL Developer 中更改数据库中的表引发错误
【发布时间】:2021-10-25 16:37:12
【问题描述】:

我有以下查询来更改我的客户表以添加一列以检查客户是否处于活动状态。

ALTER TABLE COMPANY.CUSTOMER 
    ADD (isActive VARCHAR2(18 CHAR) DEFAULT 'FALSE' NOT NULL) 
        CHECK(isActive in ('TRUE','FALSE'));

我收到以下错误:

RA-01735:ALTER TABLE 选项无效
01735. 00000 - “无效的 ALTER TABLE 选项”

我尝试更改顺序,但仍然无效。你能帮我解释为什么它无法改变表格吗?

还有如何确保插入时TRUE或FALSE总是大写?

【问题讨论】:

    标签: sql oracle constraints alter


    【解决方案1】:

    您可以将 CHECK 约束从 ADD COLUMN 中拆分为一条路线...

    /* drop table customer_so purge; */
    
    create table customer_so (id integer, name varchar2(50));
    
    ALTER TABLE CUSTOMER_SO 
    ADD (ISACTIVE VARCHAR2(20) DEFAULT 'FALSE' );
    
    ALTER TABLE CUSTOMER_SO
    ADD CONSTRAINT CUSTOMER_SO_CHK1 CHECK 
    (ISACTIVE IN ('TRUE', 'FALSE'))
    ENABLE;
    

    或者,像你以前那样,一次性完成 -

    /* drop table customer_so purge; */
    
    create table customer_so (id integer, name varchar2(50));
    
    ALTER TABLE CUSTOMER_SO 
    ADD (ISACTIVE VARCHAR2(20) DEFAULT 'FALSE' constraint CUSTOMER_SO_CHK1 CHECK 
    (ISACTIVE IN ('TRUE', 'FALSE')));
    

    所以基本上一天结束,您缺少“CONSTRAINT”关键字。

    由于您标记了 oracle-sqldeveloper,您应该知道 EDIT TABLE ddialog 允许您单击这些更改,并将为您生成 DDL -

    最后,默认情况下,Oracle 中的字符串区分大小写,因此您的检查约束将按需要工作。

    【讨论】:

    • 同意,谢谢@AlexPoole
    • 完美!!有效。也感谢分享有关 sql 开发人员编辑功能的信息。
    • 你敢打赌@happytohelp - GUI 可以提供很多帮助,但如果你观察它为你生成的后端代码,你会从中得到最大的帮助,这样你就可以学习较低的级别Oracle 数据库的基础知识。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多