ローカルデータベースを他のデータベースデータで更新するルーチンがあります。SELECTが返されたときにのみDELETEを実行
Iのみをを削除してから、以下のようにINSERT INTO tblX((tblYリンクテーブルである)tblY SELECT * FROM)、実行します。
問題はをとI'dを削除した後、いくつかのケースではSELECTは長い時間がかかる、ということであるがit's処理中に、このテーブルに要求を行うユーザの可能性を減少したいです。
I'dはのみSELECTの復帰後をDELETE実行するためのいくつかのメカニズムがあるかどうかを知りたいです。
conn = new OleDbConnection(Conexao.getConexaoPainelGerencialLocal());
conn.Open();
OleDbCommand cmd = new OleDbCommand(" DELETE * FROM tblClienteContato; ", conn);
cmd.ExecuteNonQuery();
cmd = new OleDbCommand(" INSERT INTO tblClienteContato " +
" SELECT * FROM tblClienteContatoVinculada;", conn);
cmd.ExecuteNonQuery();
Greg、 "BeginTransaction"を実行しているときに次のメッセージが表示されます: "分離レベルも強化もサポートされていません" – User
パラメータはありませんか?アクセスとジェットはおそらく分離レベルをサポートしていません。 – GregHNZ
別のオプションは、一時テーブルを使用して2つの段階でこれを行うことです。 (誰も使用していない)テンポラリテーブルからのDELETEを実行するには、遅いINSERTをテンポラリテーブルに入れます。これが完了すると、メインテーブルからDELETEし、INSERTをメインテーブルに行いますが、リモートのテーブルではなくローカルテンポラリテーブル(高速である必要があります)から選択します。これは、メインテーブルがビジーである時間がはるかに短くなければならないことを意味します。 – GregHNZ