Как предотвратить подобные [дубликаты] записей в базе данных SQL?
На данный момент у меня есть вот это:
//CHECK IF COMPLETE DUPLICATE query = "SELECT * FROM TBL_FLAVORS WHERE flavor_name = @flavor_name AND flavor_supplierid = @supplier_id"; using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand(query, con)) { SqlDataReader read; cmd.Parameters.AddWithValue("@flavor_name", txtFlavorName.Text.ToString()); cmd.Parameters.AddWithValue("@supplier_id", supplierid); read = cmd.ExecuteReader(); if (read.Read()) { MessageBox.Show("This flavor for this supplier already exists."); return; } read.Close(); } } //CHECK IF ALMOST SIMILAR //IF RECORD FOUND, RETURN //OTHERWISE, PROCEED TO UPDATE/INSERT query = "SELECT * FROM TBL_FLAVORS WHERE (flavor_name LIKE @flavor_name OR flavor_name LIKE @flavor_name2 OR FLAVOR_NAME LIKE @flavor_name3) AND flavor_supplierid = @supplier_id"; using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand(query, con)) { string flavorname = "%" + txtFlavorName.Text.ToString()+ "%"; string flavorname2 = "" + txtFlavorName.Text.ToString() + "%"; string flavorname3 = "%" + txtFlavorName.Text.ToString() + ""; SqlDataReader read; cmd.Parameters.AddWithValue("@flavor_name", flavorname); cmd.Parameters.AddWithValue("@flavor_name2", flavorname2); cmd.Parameters.AddWithValue("@flavor_name3", flavorname3); cmd.Parameters.AddWithValue("@supplier_id", supplierid); read = cmd.ExecuteReader(); if (read.Read()) { DialogResult dialog = MessageBox.Show("It is possible that this flavor for this supplier already exists. Do you want to continue?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialog == DialogResult.No) { return; } } read.Close(); } }
Это для окончательного проекта. Участник дискуссии спросил, Что делать, если уже есть "дюйм", и пользователь ввел "innch". Или, скажем, в базе данных есть "шоколад", он должен запросить подтверждение, если пользователь вводит "шоколад".
Что я уже пробовал:
Операторы подстановочных знаков SQL, как указано выше.