0

テーブルに挿入する前に、主キーがテーブルに既に存在するかどうかを確認する簡単な方法を探しています。ここで、Fname はテーブルの主キーです。

SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO [table] ([firstName], [lastName]) VALUES ('" + txtFName.Text + "','" + txtLName.Text + "')";        

cmd.ExecuteNonQuery();
conn.Close();
4

1 に答える 1

2

原則として、挿入するだけにしてください。キーが存在する場合、dbms はエラーを返します。そのエラーをトラップします。

とにかくエラーをトラップする必要があります。主キー制約以外にも、行の挿入を妨げるものがたくさんあるからです。その中で

  • 外部キー制約、チェック制約など、その他の種類の制約。
  • ディスク エラー。
  • ネットワークエラー。
  • ハリケーン。

エラーをトラップしても効率が低下することはありません。

  • 挿入 (エラーなし) には、データベースへのラウンドトリップが 1 回必要です。
  • 挿入 (トラップするエラーあり) には、データベースへの 1 回のラウンドトリップが必要です。そのエラーを修正するために必要なことは数えません。とにかく最初にチェックした場合、すべての修正を行う必要があります。
  • チェックしてから挿入するには、データベースへの 2 回の往復が必要です。

一部のプラットフォームでは、主キーがすでに存在する行を挿入しようとすると、データをマージできます。最も有名な (または見方によっては最も悪名高い) のは、MySQL の ON DUPLICATE KEY UPDATEです。

于 2012-11-01T01:41:03.763 に答える