如何获得最后插入id的ms sql服务器与FireDac组件



与FireDac,如何获得ms sql server上最后插入id ?由于

将该id设置为标识列,然后使用

获取。
SELECT SCOPE_IDENTITY()

插入语句

请参考以下链接

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

使用自增字段类型

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

这将提供类似 这样的代码
DataSet.Insert;
.... 
DataSet.Post; 
id := DataSet.FieldByName('ID').AsInteger;

另一种方法可能是像

所描述的那样制作合适的SQL语句。
  • http://en.wikipedia.org/wiki/Insert_ (SQL) # Retrieving_the_key
  • SQL Server - INSERT
  • 后返回值
  • 最好的方式来获得插入行的身份?

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

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

最新更新