Я только что потратил последние два часа своей жизни, пытаясь создать таблицу с автоматически возрастающим первичным ключом на этом уроке , урок - это большая проблема, с которой я столкнулся, это то, что Создать цель не удается, если у меня есть столбец, который является меткой времени, и таблица, которая называется меткой времени в той же таблице ...
Почему оракул не помечает это как проблему при создании таблицы?
Вот последовательность команд, которые я ввожу:
Создание таблицы:
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
Любая комбинация, в которой нет двух строк со словом «отметка времени», работает нормально. Я бы подумал, что синтаксиса будет достаточно, чтобы различать ключевое слово и имя столбца.
Как я уже сказал, я не понимаю, почему таблица создается нормально, но оракул падает, когда я пытаюсь создать триггер ...
ПОЯСНЕНИЯ
Я знаю, что проблема в том, что существует столбец с именем timestamp, который может быть или не быть ключевым словом. Моя проблема в том, почему это вызвало ошибку, когда я пытался создать триггер, а не когда я создавал таблицу, я бы по крайней мере ожидал предупреждение.
Тем не менее, если использовать Oracle в течение нескольких часов, в отчетах об ошибках это выглядит гораздо менее многословно. Может быть, только потому, что я использую экспресс-версию.
Если это ошибка в Oracle, как тот, у кого нет контракта на поддержку, будет сообщать об этом? Я просто играю с экспресс-версией, потому что мне нужно перенести некоторый код из MySQL в Oracle.