В Firebird, как вернуть идентификаторы удаленных строк? - PullRequest
0 голосов
/ 04 июля 2011

Я хотел бы вернуть идентификаторы, которые были удалены запросом DELETE.

На Stackoverlow я нашел это: Как получить идентификатор последней обновленной строки в MySQL?

Ответ top1 имеет очень хорошее решение, но это для mysql. Я попытался сделать то же самое в Firebird после прочтения некоторой части руководства Firebird:

set term ^ ;

EXECUTE BLOCK
AS
    DECLARE VARIABLE uids BLOB SUB_TYPE TEXT;
begin
    DELETE FROM CATEGORY WHERE name = 'Haló'
    AND ( SELECT id INTO :uids );
    SELECT @uids;
end
^

Да, я знаю, что 'uids' всегда будет содержать один идентификатор, так как я перезаписываю переменную, но это всего лишь тест, и, более того, он не работает. Он останавливается на «INTO», говоря «Токен неизвестен - строка 8, столбец 21». Я не знаю, что делать, что продолжать ..: \

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Для этого, пожалуйста, запустите отдельные запросы

  1. Сначала извлеките идентификаторы записей, которые вы хотите удалить, с тем же условием где DELETE

как, SELECT ID FROM CATEGORY WHERE name = 'Haló'

  1. Затем удалите записи
0 голосов
/ 30 октября 2012

вы можете попробовать предложение "RETURNING", например так:

delete from Scholars
  where firstname = 'Henry' and lastname = 'Higgins'
  returning lastname, fullname, id

смотрите здесь для получения более подробной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...