あなたセッションやテーブルのスコープの最後に挿入されたID値を取得するには、ここにいくつかの読書であることができます:
しかし、あなたはそれらのことを覚えておく必要があります値はテーブルに挿入されるたびに変化するため、それらを信頼することはできません。最善の方法は、この値を前面に表示しないことです。関連リソースの場合は、マスター表に挿入し、SCOPE_IDENTITYを取り出して、取り出した値を持つ子表に挿入するストアド・プロシージャ(またはインラインT-SQLブロックのみ)を作成できます。 (ADO.NETで)私は、上述したものの単なる例
EDIT
:
using (SqlConnection connection = new SqlConnection(_connectionString))
{
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
int insertedIdentity;
using (SqlCommand command = new SqlCommand("INSERT INTO TableNames(ColumnsList) VALUES(@ValuesList) SELECT @InsertedIdentity = SCOPE_IDENTITY()", connection, transaction))
{
command.CommandType = CommandType.Text;
//Add any parameters required by INSERT here, then add parameter for SCOPE_IDENTITY
...
command.Parameters.Add(new SqlParameter("@InsertedIdentity", SqlDbType.Decimal) { Direction = ParameterDirection.Output });
command.ExecuteNonQuery();
insertedIdentity = Convert.ToInt32(command.Parameters["@InsertedIdentity"].Value);
}
//Now you can make all the child inserts using insertedIdentity and transaction
...
transaction.Commit();
}
それだけで1ミリ秒後に異なる場合がありますので、あなたはその値をdiplayする何のためにする必要がありますか? ** [SCOPE_IDENTITY](http://msdn.microsoft.com/de-de/library/ms190315.aspx)(SQL-Server)を介して作成され、取得された後にのみ**信頼されます。 –
@Tim Schmelter私は 'Add Update'フォームに値を表示する必要があります。しかし、同じフォームからイメージを追加するときにSQL文でこの値を使用する必要があります。これは実際の問題が発生したときです。 – Matthew
@Steve SQL Server 2008を使用しています。管理者がID 23の最後の行を削除して後で更新プログラムを追加すると、テキストボックスの値が23に表示され、23から同じイメージを追加するときに23が使用されますフォームに挿入する行の実際の値は24です。 – Matthew