Oracle推我ORA-00902:数据类型无效

时间:2017-12-06 13:39:09

标签: oracle

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

最后一个表导致错误

2 个答案:

答案 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数据类型名称。