我是SQL新手。
我正在尝试创建一个表:
CREATE TABLE account
(AccountNo NUMBER(2) PRIMARY KEY,
AccountType VARCHAR(1) FOREIGN KEY REFERENCES account_type(TypeCode),
CustomerRef NUMBER(2) FOREIGN KEY REFERENCES bank_customer(CustomerRef),
DateOpened DATE,
CurrentBalence NUMBER(6,2),
OverdraftLimit NUMBER(5,2));
然而它出现了:ORA-00907:缺少右括号 我知道你可以使用外键,所以这不是问题所在。有人可以给我一个创建表的解决方案吗?
答案 0 :(得分:1)
外键实际上必须引用某些东西。在您的情况下,您必须告诉Oracle AccountType和CustomerRef引用的内容。通常看起来如下:
AccountType VARCHAR(1) FOREIGN KEY REFERENCES TABLE_NAME(COLUMN_NAME)
当然,您必须将TABLE_NAME和COLUMN_NAME替换为表格的名称以及您所指的列名称。
答案 1 :(得分:1)
在声明约束时可以使用两种符号:
1)内联(约束):
CREATE TABLE account
(AccountNo NUMBER(2) PRIMARY KEY,
AccountType VARCHAR(1) REFERENCES account_type(TypeCode),
CustomerRef NUMBER(2) REFERENCES bank_customer(CustomerRef),
DateOpened DATE,
CurrentBalence NUMBER(6,2),
OverdraftLimit NUMBER(5,2));
2)外线
CREATE TABLE account
(
AccountNo NUMBER(2) PRIMARY KEY,
AccountType VARCHAR(1),
CustomerRef NUMBER(2),
DateOpened DATE,
CurrentBalence NUMBER(6,2),
OverdraftLimit NUMBER(5,2),
FOREIGN KEY(AccountType) REFERENCES account_type(TypeCode),
FOREIGN KEY(CustomerRef) REFERENCES account_type(TypeCode)
);
在这两种情况下,您都可以使用CONSTRAINT <name>
添加约束声明,以便将您的名称赋予约束,否则Oracle会指定自己的名称。
内联表示法应用于声明约束的列,将外行应用于表。语法略有不同+一些限制,例如你不能声明外行NULL约束。
您可以在CREATE TABLE和ALTER TABLE中使用内联和外联语法。有关更多信息,请参阅Oracle文档
答案 2 :(得分:0)
你缺少外键语法......
CREATE TABLE account
(AccountNo NUMBER(2) PRIMARY KEY (P_ID),
AccountType VARCHAR(1) FOREIGN KEY (F1_ID) REFERENCES <table_name>(field_name>),
CustomerRef NUMBER(2) FOREIGN KEY (F2_ID) REFERENCES <table_name>(field_name>),
DateOpened DATE,
CurrentBalence NUMBER(6,2),
OverdraftLimit NUMBER(5,2));
答案 3 :(得分:0)
您需要使用REFERENCES
定义外键。在下面的代码段中,将AccountTypeTable
和CustomerRefTable
替换为正确的表名,并将typeColumn
和refColumn
替换为与这些匹配的表中的正确列名。
<强>更新强>
我在您对另一个答案的评论中添加了正确的值
CREATE TABLE account (
AccountNo NUMBER(2) PRIMARY KEY,
AccountType VARCHAR(1),
CustomerRef NUMBER(2),
DateOpened DATE,
CurrentBalence NUMBER(6,2),
OverdraftLimit NUMBER(5,2),
CONSTRAINT account_fk1 FOREIGN KEY (AccountType) REFERENCES Account_Type(TypeCode),
CONSTRAINT account_fk2 FOREIGN KEY (CustomerRef) REFERENCES Bank_Customer(CustomerRef));