-3
CREATE TABLE Customer(
Cust_Id Number(4),
Cust_First_Name  VarChar2(20),
Cust_Mid_Name VarChar2(20),
Cust_Last_Name VarChar2(20),            
Account_Type Varchar2(15),          
Cust_Email VarChar2(30),                
Cust_Mobile Number(10),
Bank_Id NUMBER(4),
Account_No Number(4),
CONSTRAINT Cust_Id_Pri_Key PRIMARY KEY (Cust_Id),
CONSTRAINT Cust_Last_Name_Not_Null NOT NULL (Cust_Last_Name),
CONSTRAINT Cust_First_Name_Not_Null NOT NULL (Cust_First_Name),
CONSTRAINT Cust_Email_Unq UNIQUE(Cust_Email),
CONSTRAINT Cust_Mobile_Unq UNIQUE(Cust_Mobile),
CONSTRAINT Bank_Id_For_Key FOREIGN KEY REFERENCES bank(bankId)
);
4

2 回答 2

2

工作 SQL 小提琴:http ://sqlfiddle.com/#!4/05311

这是您的 SQL 的外观。

CREATE TABLE Customer(
Cust_Id Number(4) NOT NULL,
Cust_First_Name  VarChar2(20) NOT NULL,
Cust_Mid_Name VarChar2(20),
Cust_Last_Name VarChar2(20) NOT NULL,            
Account_Type Varchar2(15),          
Cust_Email VarChar2(30),                
Cust_Mobile Number(10),
Bank_Id NUMBER(4),
Account_No Number(4),
CONSTRAINT Cust_Id_Pri_Key PRIMARY KEY (Cust_Id),
CONSTRAINT Cust_Email_Unq UNIQUE(Cust_Email),
CONSTRAINT Cust_Mobile_Unq UNIQUE(Cust_Mobile),
CONSTRAINT Bank_Id_For_Key FOREIGN KEY (Bank_Id) REFERENCES bank(bankId)  
);

几乎所有的错误都来自语法。

  • NOT NULL在列名本身中指定,而不是作为单独的约束。
  • FOREIGN KEY CONSTRAINT requires you to specify the source column name, and the 外键主键column in the table that it is defined as a`
于 2014-11-17T18:28:00.110 回答
0

您有两个问题:您不能指定NOT NULL为外键约束,并且您在外键约束中缺少列名。以下应该有效:

CREATE TABLE customer
(
   cust_id NUMBER (4),
   cust_first_name VARCHAR2 (20) CONSTRAINT cust_first_name_not_null NOT NULL,
   cust_mid_name VARCHAR2 (20),
   cust_last_name VARCHAR2 (20) CONSTRAINT cust_last_name_not_null NOT NULL,
   account_type VARCHAR2 (15),
   cust_email VARCHAR2 (30),
   cust_mobile NUMBER (10),
   bank_id NUMBER (4),
   account_no NUMBER (4),
   CONSTRAINT cust_id_pri_key PRIMARY KEY (cust_id),
   CONSTRAINT cust_email_unq UNIQUE (cust_email),
   CONSTRAINT cust_mobile_unq UNIQUE (cust_mobile),
   CONSTRAINT bank_id_for_key FOREIGN KEY (bank_id) REFERENCES bank (bankid)
);

但是,我不会为NOT NULL约束命名而烦恼。命名它们并不能真正增加可管理性,因为它们可以通过在不知道名称的情况下更改表来更新。

于 2014-11-17T18:29:24.973 回答