FireDacで、ms sqlサーバーで最後に挿入されたIDを取得する方法は? ありがとう
質問する
8508 次
2 に答える
2
自動インクリメント フィールド タイプを使用する
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)#Retrifying_the_key
- SQL Server - INSERT 後の戻り値
- 挿入された行のIDを取得する最良の方法は?
AnyDAC の作成者は、 http: //docs.embarcadero.com/products/rad_studio/firedac/uADCompClient_TADCustomConnection_GetLastAutoGenValue@String.html から DBMS 固有のツールを取得する特別な方法も提案しています。
しかし、これらの事後要求はすべて、SELECT @@identity
脆弱SELECT SCOPE_IDENTITY
で危険です。テーブル A にデータを挿入すると、そのトリガーによって関連するテーブル B と C にデータが挿入される可能性があり、ID は、挿入を開始したテーブルではなく、C の autoinc を呼び出します。
于 2013-04-11T12:49:32.690 に答える