我有以下查詢來更改我的客戶表以添加一列以檢查客戶是否處于活動狀態。
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 是否總是大寫?
uj5u.com熱心網友回復:
您可以將 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 中的字串區分大小寫,因此您的檢查約束將按需要作業。

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/336353.html
