在 SQL 开发人员中更改数据库中的 table 抛出错误

Alter table in database throwing error in SQL Developer

我有以下查询来改变我的客户 table 添加一个列来检查客户是否活跃。

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

我收到以下错误:

RA-01735: invalid ALTER TABLE option
01735. 00000 - "invalid ALTER TABLE option"

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

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

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

/* 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,你应该知道编辑 TABLE ddialog 让你点击这些更改,并会为你生成 DDL -

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