尝试使用 SQL 创建 table 时标识符无效

Invalid identifier when trying to create a table with SQL

我正在尝试创建一个 table,但我收到一个无效标识符错误。这是什么意思?我一遍又一遍地查看代码。我的所有其他陈述 运行 都很完美。无法弄清楚这是什么问题。

这里是returns错误的说法:

/* Create Transaction Table */
31 CREATE TABLE TRANSACTION(TxNbr INTEGER PRIMARY KEY,
32                        TxCode CHAR(1) NOT NULL,
33                        AccountNbr INTEGER NOT NULL,
34                        Amount DECIMAL(13,2) NOT NULL,
35                         Date DATE,
36                         Time TIME,
37                         RefNbr VARCHAR(3),
38                         FOREIGN KEY(AccountNbr) REFERENCES ACCOUNT (AccountNbr) ON DELETE SET NULL,
39                         FOREIGN KEY(TxCode) REFERENCES TX_TYPE (TxCode) ON DELETE SET NULL
40                         );

这是错误:

Error starting at line : 31 in command -
Error report -
ORA-00904: : invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

你的代码有两个问题(不考虑外键约束,我们无法在不知道相关表的结构的情况下进行验证)

  • DATE 是 Oracle 中的保留字(这是一种数据类型),因此它不能用于列名,除非您用双引号将其括起来 - 但如果您这样做,那么每次访问它时都需要引用该列。我建议只使用与语言关键字不冲突的列名。

  • Oracle中没有TIME数据类型; DATE 数据类型实际上存储日期 时间 - 这通常比将日期和时间部分分开在两个不同的列中更好,因为它使日期算法更容易。我建议只删除该列。

考虑:

CREATE TABLE TRANSACTION(
    TxNbr INTEGER PRIMARY KEY,
    TxCode CHAR(1) NOT NULL,
    AccountNbr INTEGER NOT NULL,
    Amount DECIMAL(13,2) NOT NULL,
    TxDate DATE,
    RefNbr VARCHAR(3)
    FOREIGN KEY(AccountNbr) REFERENCES ACCOUNT (AccountNbr) ON DELETE SET NULL,
    FOREIGN KEY(TxCode) REFERENCES TX_TYPE (TxCode) ON DELETE SET NULL
);