Как получить последние вставленные записи (строки) во всех таблицах в базе данных Firebird?
У меня проблема. Мне нужно получить последние вставленные строки во всех таблицах в БД Firebird. И еще, эти строки должны содержать указанное имя столбца. Я прочитал несколько статей о rdb$, но у меня есть немного опыта с этим.
Кто-нибудь может помочь?
Thanx.
3 ответа
Не существует надежного способа получить "последнюю вставленную строку", если в таблице нет поля метки времени, в котором хранится эта информация (метка времени вставки).
Если в таблице используется целое число PK, сгенерированное с помощью sequense (генератор на жаргонном жаргоне), вы можете запросить самое высокое значение PK, но это также не является надежным.
Понятия "последний ряд вставлено" не существует. Видимость и доступность для других транзакций зависит от времени фиксации, указанной изоляции транзакции и т. Д. Даже использование генератора или временной метки, как предложено в ain, не очень помогает из-за этой проблемы видимости.
Возможно, вам лучше указать конкретную проблему, которую вы пытаетесь решить.
SELECT GEN_ID(ID_HEDER,0)+1 FROM ANY_TABLE INTO :ID;
INSERT INTO INVOICE_HEADER (No,Date_of,Etc) VALUES ('122','2013-10-20','Any text')
/* ID record of INVOICE_HEADER table gets the ID_number from the generator above. So
now we have to check if the ID =GEN_ID(ID_HEADER,0) */
IF (ID=GEN_ID(ID_HEADER,0)) THEN
BEGIN
INSERT INTO INVOICE_FOOTER (RELACION_ID, TEXT, Etc) Values (ID, 'Text', Etc);
END
ELSE
REVERT TRANSACTION
Это все