2016-07-03 29 views
1

Wenn ich diese Abfrage ausführen:eine Tabelle in Oracle mit einem Standardwert für eine Spalte

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") 
); 

ich diesen Fehler:

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

+3

Was es "Status" VARCHAR2 (1) STANDARD (A) bedeutet? Vielleicht ein'? –

Antwort

1

Das Problem ist mit dem Standardwert der "Status" Säule. String-Konstanten in SQL werden in einfachen Anführungszeichen (') angegeben. Ohne sie werden bloße Wörter als Objektnamen interpretiert, die in diesem Kontext nicht erlaubt sind.

Um eine lange Geschichte kurz, fügen Sie Zitate auf den Standardwert zu machen, und Sie sollten in Ordnung sein:

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

String-Konstanten in einzelnen Anführungszeichen eingeschlossen werden müssen. Alles ohne Anführungszeichen ist ein Bezeichner.

So sind die A in

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

verweist auf eine Spalte 'A' genannt.

Sie wollen

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