Как получить последние вставленные записи (строки) во всех таблицах в базе данных Firebird? - PullRequest
0 голосов
/ 13 декабря 2011

У меня проблема.Мне нужно получить последние вставленные строки во всех таблицах в БД Firebird.И еще, эти строки должны содержать указанное имя столбца.Я прочитал несколько статей о rdb $, но у меня есть немного опыта с этим.

Кто-нибудь может помочь?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 13 декабря 2011

Нет надежного способа получить «последнюю вставленную строку», если в таблице нет поля метки времени, в котором хранится эта информация (метка времени вставки).

Если в таблице используется целое число PK, сгенерированное с помощью sequense (генератор на жаргонном жаргоне), вы можете запросить самое высокое значение PK, но это также не является надежным.

1 голос
/ 16 декабря 2011

Понятие «последний ряд вставлено» отсутствует. Видимость и доступность для других транзакций зависит от времени фиксации, заданной изоляции транзакции и т. Д. Даже использование генератора или временной метки, предложенных ain, не очень помогает из-за этой проблемы видимости.

Возможно, вам лучше указать реальную проблему, которую вы пытаетесь решить.

0 голосов
/ 20 октября 2013
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

Это все

...