Использование зарезервированного слова TimeStamp в качестве имени поля (Firebird 2.5)

Я расширяю уровень данных существующего приложения для работы с Firebird 2.5 в дополнение к MSSQL и SQLite, но наткнулся на камень преткновения.

У меня есть поле с именем TimeStamp, которое хранит данные/время как тип TimeStamp. Это прекрасно работает в MSSQL и SQLite, где используется тип datetime, но не работает в Firebird. Следующий SQL:

SELECT SysTrnId,'TimeStamp' from "TRANSACTIONS"

по-видимому, работает, но поле TimeStamp возвращается как имя поля «CONSTANT», а содержимое представляет собой текст «timestamp»

Можно ли это сделать в Firebird, или мне придется переименовать поле и изменить код в других слоях данных.


person CDM    schedule 26.11.2009    source источник


Ответы (2)


Экранирующий символ firebird — это двойная кавычка ". Обратите внимание, что в firebird, если у вас есть поле, которое вы должны экранировать двойными кавычками, оно также становится чувствительным к регистру. Итак, если вы объявили свое поле как TimeStamp, то select "TIMESTAMP" ... завершится ошибкой с ошибкой "поле не найдено".

person Donnie    schedule 26.11.2009
comment
Спасибо, так получилось. Я понимаю, что имя поля нужно будет изменить, но сначала нужно исправить это, прежде чем я смогу углубиться и сделать так во всех поддерживаемых базах данных. Спасибо. - person CDM; 27.11.2009
comment
Очень полезно. Кстати, вот полный список зарезервированных ключевых слов: firebirdsql.org/refdocs / - person Peter; 29.09.2015

Я понятия не имею, работает ли это, но пробовали ли вы двойные кавычки вокруг TimeStamp, одинарные кавычки обычно указывают постоянную строку.

person Khb    schedule 26.11.2009
comment
Да, я пробовал это, но получил ошибку: Dynamic SQL Error Код ошибки SQL = -206 Неизвестная отметка времени столбца В строке 1, столбце 29 Колин - person CDM; 26.11.2009