我刚刚浪费了过去两个小时试图根据本教程创建一个具有自动递增主键的表,本教程很棒,我遇到的问题是如果我有一个列,则创建目标会失败这是一个时间戳和一个在同一个表中称为时间戳的表......
为什么 oracle 在我创建表时不将此标记为问题?
这是我输入的命令序列:
创建表:
CREATE TABLE myTable (id NUMBER PRIMARY KEY, field1 TIMESTAMP(6), timeStamp NUMBER, );
创建序列:
CREATE SEQUENCE test_sequence START WITH 1 INCREMENT BY 1;
创建触发器:
CREATE OR REPLACE TRIGGER test_trigger BEFORE INSERT ON myTable REFERENCING NEW AS NEW FOR EACH ROW BEGIN SELECT test_sequence.nextval INTO :NEW.ID FROM dual; END; /
这是我收到的错误消息:
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-320: the declaration of the type of this expression is incomplete or malformed
任何没有两行和“时间戳”字样的组合都可以正常工作。我原以为语法足以区分关键字和列名。
正如我所说,我不明白为什么表创建得很好,但是当我尝试创建触发器时,oracle 崩溃了......
澄清
我知道问题在于有一个名为 timestamp 的列,它可能是也可能不是关键字。我的问题是为什么当我尝试创建触发器而不是创建表时它会发出声音,我至少会收到警告。
也就是说,使用 Oracle 几个小时后,它的错误报告似乎不那么冗长了,也许只是因为我使用的是 express 版本。
如果这是 Oracle 中的一个错误,没有支持合同的人将如何报告它?我只是在玩快速版本,因为我必须将一些代码从 MySQL 迁移到 Oracle。