create table accountDetails(
accountNumber int unique,
customerId int unique,
balance int not null,
password varchar(255) not null,
type varchar(255) not null check(type in ('Savings','Current')),
primary key(accountNumber,customerId) )
create table statusDetails(
customerId int references accountDetails(customerId),
primarykey(customerId))
最后一个表导致错误
答案 0 :(得分:0)
当我们尝试使用无效的数据类型定义列时,会发生最后一个表导致错误
ORA-00902: invalid datatype
错误。这真的很合乎逻辑。
现在,您认为您尚未声明具有无效数据类型的列,因为您认为statusdetails
表只有一列customerid
。但是,如果你看一下你的实际陈述,你可以按照以下方式关注该栏目:
primarykey(customerId))
因为您输错了primary key
Oracle将该行视为尝试创建第二列。因此错误,因为(customerId)
是无效的数据类型。所以你需要做的只是弹出缺失的空间,Oracle将为你创建表。
create table statusDetails(
customerId int references accountDetails(customerId),
primary key(customerId))
由于简单的拼写错误导致编译错误。开发人员的一项关键技能是能够对我们自己的代码视而不见。我恳请你尽快获得这项技能。
答案 1 :(得分:-1)
你的第二张表声明都错了。试试这个:
CREATE TABLE statusdetails (
customerid INT,
CONSTRAINT fk_cust FOREIGN KEY ( customerid )
REFERENCES accountdetails ( customerid )
)
注意:使用“int”数据类型映射到NUMBER(38),这可能不是您想要的。使用正确的oracle数据类型名称。