ID 列が主キーで自動インクリメントに設定されている場合、テーブル挿入コマンドを実行するにはどうすればよいですか?
私は次のことを試しました:
using (SqlConnection conn = new SqlConnection(connstring))
{
SqlCommand identChange = conn.CreateCommand();
identChange.CommandText = "SET IDENTITY_INSERT table1 ON";
conn.Open();
string commtext = @"Insert INTO table1 (ID, Username)
SELECT @ID, @User";
SqlCommand comm = new SqlCommand(commtext, conn);
comm.Parameters.AddWithValue("@ID", -1);
comm.Parameters.AddWithValue("@User", loggedinuser);
identChange.ExecuteNonQuery();
comm.ExecuteNonQuery();
conn.Close();
}
しかし、IDにどのような値が入れられても(0と-1を試しました)、ID列の下にその値を持つ新しい行が作成されます。その結果、次の行を挿入しようとすると、同じ ID を持つ行が 2 つあるため、エラーが発生します。