すべてのRDBMS(Oracle、MS SQL、Interbaseなどを含む)は、「マルチタスク」と同じです。
:また、RDMSは、特別にのみトリックはあなたが別のタスク、スレッド、電気ショック療法の間
シェア
Connection
をすべきでないということである
https://en.wikipedia.org/wiki/ACID
(のdetailesのためのACIDを参照)、このようなモードで動作するように設計されています
Action action1 =() => {
using (SqlConnection conn = new SqlConnection(ConnectionStringHere)) {
conn.Open();
using (SqlCommand q = new SqlCommand()) {
q.Connection = conn;
q.CommandText = "update MyTable set x = 123 where y = 789";
q.ExecuteNonQuery();
}
}
};
Action action2 =() => {
using (SqlConnection conn = new SqlConnection(ConnectionStringHere)) {
conn.Open();
using (SqlCommand q = new SqlCommand()) {
q.Connection = conn;
q.CommandText = "delete from MyTable where y = 456";
q.ExecuteNonQuery();
}
}
};
// Let's call both actions in parallel (simultaneously)
Parallel.Invoke(action1, action2);
いつでも2番目の接続を持つことができます。 – BugFinder
トランザクションを使用するかどうかによって異なります。トランザクションの分離レベルを「READ UNCOMMITED」に設定することができます。この方法では、一方のプロセスは表に書き込む排他権限を持ち、他方は「ダーティ」なデータを読み取ることができます。 – PacoDePaco