在 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 中的字符串区分大小写,因此您的检查约束将按需要工作。
我有以下查询来改变我的客户 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 中的字符串区分大小写,因此您的检查约束将按需要工作。