使用SQL插入自动增量

时间:2013-07-19 17:28:59

标签: c# sql-server

之前有过这样的问题,但我并不真正理解答案。这是我的查询

using (SqlCommand cmd = new SqlCommand(
    "INSERT INTO Results VALUES(@ResultID, @HasSucceeded, @ScenarioID, @Screenshot)",
    conn))
{
    cmd.Parameters.AddWithValue("@ResultID", Id);
    cmd.Parameters.AddWithValue("@HasSucceeded", HasSucceeded);
    cmd.Parameters.AddWithValue("@ScenarioID", Id);
    cmd.Parameters.AddWithValue("@Screenshot", screenshot);

    cmd.ExecuteNonQuery();
}

现在我使用Id作为@ResultID的占位符。我真正想做的是使用此autoincrement查询@ResultID INSERT INTO。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

将其设为IDENTITY列(例如,IDENTITY(1,1))并让数据库对其进行管理。试图从外部管理它是一个线程噩梦。然后它变成(注意到它由于使用2列的Id而异常复杂,这听起来像是错误):

int newId = 0;

using (SqlCommand cmd = new SqlCommand(
    @"INSERT INTO Results (HasSucceeded, Screenshot)
      VALUES (@HasSucceeded, @Screenshot);
      DECLARE @ResultID int = SCOPE_IDENTITY();
      UPDATE Results SET ScenarioID = @ResultID
                     WHERE ResultID = @ResultID;
      SELECT @ResultID;", conn))
{
    cmd.Parameters.AddWithValue("@HasSucceeded", HasSucceeded);
    cmd.Parameters.AddWithValue("@Screenshot", screenshot);

    newId = (int)cmd.ExecuteScalar();
}

// ...Use newId here...