1

使用 FireDac,如何在 ms sql 服务器上获取最后插入的 id?谢谢

4

2 回答 2

5

将该 id 设为标识列,然后通过 Using 获取它

SELECT SCOPE_IDENTITY()

在插入语句之后

请参考以下链接

http://msdn.microsoft.com/en-us/library/ms190315.aspx

于 2013-04-11T13:12:35.067 回答
2

使用自增字段类型

http://www.da-soft.com/anydac/docu/Auto-Incremental_Fields.html

这将提供类似的代码

DataSet.Insert;
.... 
DataSet.Post; 
id := DataSet.FieldByName('ID').AsInteger;

另一种方法可能是制作适当的 SQL 语句,如在


AnyDAC 作者还建议通过http://docs.embarcadero.com/products/rad_studio/firedac/uADCompClient_TADCustomConnection_GetLastAutoGenValue@String.html获取特定于 DBMS 的工具的特殊方法

SELECT @@identity但是所有那些带有or的事后请求SELECT SCOPE_IDENTITY都是脆弱和危险的。当您将数据插入表 A 时,其触发器可能会将数据插入相关的表 B 和 C 中,并且标识会调用 C 的 autoinc,而不是您开始插入的表。

于 2013-04-11T12:49:32.690 回答