我有问题。我需要在Firebird db的所有表中获取最后插入的行。另外,这些行必须包含指定的列名。我阅读了一些关于rdb $的文章,但对这个文章有一些经验。
有人可以帮忙吗?
感谢名单。
答案 0 :(得分:2)
没有可靠的方法来获取“最后一行插入”,除非该表有一个存储该信息的时间戳字段(插入时间戳)。
如果该表使用由sequense生成的整数PK(Firebird语言中的生成器),那么您可以查询最高PK值,但这也不可靠。
答案 1 :(得分:1)
没有'最后一行插入'的概念。其他事务的可见性和可用性取决于提交的时间,指定的事务隔离等。由于此可见性问题,即使使用ain建议的生成器或时间戳也无济于事。
也许您最好指定您要解决的实际问题。
答案 2 :(得分:0)
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
这就是全部