Если нужно добавить запись так, что бы она не повторялась, причём добавлять её будут пытаться из разных процессов. Как лучше всего это сделать? Что то меня смущает этот подход с исключениями.
| Код | public static void UniqueAdd(this SqlConnection con, int i, string name) { using (var tr = con.BeginTransaction(IsolationLevel.Serializable)) { try { var co = con.CreateCommand(); co.Transaction = tr; co.CommandType = CommandType.Text; co.CommandText = String.Format(@"INSERT INTO WALL(I,V) SELECT {0},'{1}' WHERE NOT EXISTS(SELECT TOP 1 I FROM WALL WHERE I = {0})", i, name); co.ExecuteNonQuery(); tr.Commit(); } catch(SqlException ex) { tr.Rollback(); if(ex.Number == 1205) Console.WriteLine("rollback " + i + " " + name); } } }
|
|