在Firebird中,如何返回已删除行的ID?

时间:2011-07-04 09:20:36

标签: sql database

我想返回已被DELETE查询删除的ID。

在Stackoverlow上,我发现了这个: How to get ID of the last updated row in 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'将始终包含一个ID,因为我正在覆盖变量,但它只是一个测试,更重要的是,它不起作用。它在'INTO'停止说“令牌未知 - 第8行,第21栏”。我不知道该做什么,继续做什么......:\

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

为此,请运行单独的查询

  1. 首先使用相同的DELETE条件
  2. 获取要删除的记录ID

    喜欢,SELECT ID FROM CATEGORY WHERE name = 'Haló'

    1. 然后删除记录

答案 1 :(得分:0)

您可以尝试“RETURNING”子句,如下所示:

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

look here for more details