1

MAX + 1 を実行する ID フィールドを手動で作成したいのですが、1 つのクエリで作成したいので、2 つのエントリが同じフィールドを取得できないことが確実です。

        using (MySqlConnection dbConn = new MySqlConnection(ConfigurationManager.ConnectionStrings["ProjektConStr"].ConnectionString))
    {
        dbConn.Open();
        using (MySqlCommand cmd = new MySqlCommand("INSERT INTO Submission (CaseId , SubjectId, CenterId, EmployeeName, Reason, Description, Explanation, Date, Done, ChiefLevel) VALUES (MAX(CaseId)+1, @subject_id, @center_id, @employee_name, @reason, @description, @explanation, @date, @done, @chief)", dbConn))
        {
            cmd.Parameters.AddWithValue("date", submission.Date);
            cmd.Parameters.AddWithValue("subject_id", submission.SubjectId);
            cmd.Parameters.AddWithValue("center_id", submission.CenterId);
            cmd.Parameters.AddWithValue("employee_name", submission.EmployeeName);
            cmd.Parameters.AddWithValue("reason", submission.Reason);
            cmd.Parameters.AddWithValue("description", submission.Description);
            cmd.Parameters.AddWithValue("explanation", submission.Explanation);
            cmd.Parameters.AddWithValue("done", false);
            cmd.Parameters.AddWithValue("chief", false);
            cmd.ExecuteNonQuery();
        } 
    }
4

3 に答える 3

3
          Use subquery to select max and insert a value 

INSERT INTO Submission(CaseId、SubjectId、CenterId、EmployeeName、Reason、Description、Explanation、Date、Done、ChiefLevel)VALUES(

          (1 + coalesce((SELECT max(CaseId) FROM Submission), 0))

、@ subject_id、@ center_id、@ employee_name、@ reason、@ description、@ description、@ date、@ done、@ chief)

于 2012-06-21T12:44:13.810 に答える
0
 using (MySqlCommand cmd = new MySqlCommand("INSERT INTO Submission 
 (CaseId , SubjectId, CenterId, EmployeeName, Reason, Description, Explanation, 
 Date, Done, ChiefLevel) 
 VALUES ((select MAX(CaseId)+1 from YourTable), 
 @subject_id, @center_id, @employee_name, @reason, @description, @explanation,
 @date, @done, @chief)", dbConn))
于 2012-06-21T12:44:37.153 に答える
0

これを単一のクエリで行うことはできません。MAX_idをフェッチしてからインクリメントして挿入するか、テーブルを自動インクリメントとして作成できます。ここでは、挿入クエリにidを含める必要はありません。

于 2012-06-21T12:45:21.640 に答える