2016-07-03 5 views
1

Когда я запускаю этот запрос:Создание таблицы в Oracle со значением по умолчанию для столбца

Create table ACCT_MSTR 
("Acct_no" varchar2 (10) NOT NULL PRIMARY KEY, 
"SF_no" varchar2 (10), 
"LF_no" varchar2 (10), 
"Branch_no" varchar2 (10), 
"Intro_Cust_no" varchar2 (10), 
"Intro_Acct_no" varchar2 (10), 
"Intro_sign" varchar2 (1), 
"Type" Varchar2 (2), 
"Opr_mode" varchar2 (2), 
"Cust_accut_type" varchar2 (4), 
"Title" varchar2 (30), 
"Corp_Cust_no" varchar2 (10), 
"Aplndt" Date, 
"Opendt" Date, 
"Veri_Emp_no" VARCHAR2 (10), 
"Veri_sign" varchar2 (1), 
"Manager_sign" varchar2 (1), 
"Curbal" NUMBER(8,2), 
"Status" varchar2 (1) DEFAULT (A), 
CONSTRAINT Am_Bn_fk FOREIGN KEY("Branch_no") references BRANCH_MSTR ("Branch_no"), 
CONSTRAINT Am_Icn_fk FOREIGN KEY("Intro_Cust_no") references CUST_MSTR ("Cust_no"), 
CONSTRAINT Am_Ian_fk FOREIGN KEY("Intro_Acct_no") references ACCT_MSTR ("Acct_no"), 
CONSTRAINT Am_ccn_fk FOREIGN KEY("Corp_Cust_no") references CUST_MSTR ("Cust_no"), 
CONSTRAINT Am_ven_fk FOREIGN KEY("Veri_Emp_no") references EMP_MSTR ("Emp_no") 
); 

Я получаю эту ошибку:

SQL Error: ORA-00984: column not allowed here
00984. 00000 - "column not allowed here"

+3

Что значит "Status" VARCHAR2 (1) DEFAULT (A)? Может быть «А»? –

ответ

1

Проблема в том, со значением по умолчанию в "Status" колонка. Строковые константы в SQL обозначаются одинарными кавычками ('). Без них голые слова интерпретируются как имена объектов, которые в этом контексте не допускаются.

Чтобы сделать длинную историю короткой, добавить кавычки в значение по умолчанию, и вы должны быть в порядке:

"Status" varchar2 (1) DEFAULT ('A'), 
-- Here -----------------------^-^ 
2

Строковые константы должны быть заключены в одиночные кавычки. Ничего без цитаты - это идентификатор.

Так A в

"Status" varchar2 (1) DEFAULT (A), 

ссылки столбец с именем 'A'.

Вы хотите

"Status" varchar2 (1) DEFAULT ('A'),