Как вставить определенное значение несколько раз в значение первичного ключа БД
Я работаю с розничным приложением, и каждый раз, когда я пытаюсь ввести определенный продукт с одним и тем же кодом продукта несколько раз в одной продаже, я получаю ошибку: "нарушение ограничения первичного ключа. не удается вставить дубликат ключа'
Любая помощь в этом вопросе будет высоко оценена.
Спасибо.
Что я уже пробовал:
Я удалил первичный ключ из поля productcode в базе данных. Это не сработало.
Вот функция, которая сохраняет заказ на продажу в базе данных:
"
Public Shared Function SaveOrder(ByVal newOrder As EkOrderClass) As Integer GetCon() opencon() Dim TR As SqlClient.SqlTransaction = con.BeginTransaction CMD.Transaction = TR cmd.CommandText = "INSERT TBL_ORDER (EmpID, OrderDate, OrderTime) VALUES (@EmpID, @orderDate, @OrderTime);SELECT Scope_Identity()" cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@EmpId", frmSales.lblUser.Text) cmd.Parameters.AddWithValue("@orderDate", Today) cmd.Parameters.AddWithValue("@OrderTime", frmSales.lblTime.Text) Dim OrderID As Int32 Try OrderID = System.Convert.ToInt32(cmd.ExecuteScalar) MyOrderId = OrderID Catch ex As Exception TR.Rollback() closecon() Throw ex End Try For Each det As EkOrderDetail In newOrder.Details cmd.CommandText = "INSERT [TBL_ORDER_DETAILS] (OrderID, ProductCode, UnitPrice, Quantity) VALUES (@OrderID, @productCode, @price, @quantity)" CMD.Parameters.Clear() cmd.Parameters.AddWithValue("@orderID", MyOrderId) cmd.Parameters.AddWithValue("@productCode", det.ProductCode) CMD.Parameters.AddWithValue("@price", det.ProductPrice) CMD.Parameters.AddWithValue("@quantity", det.ProductQuantity) Try CMD.ExecuteNonQuery() Catch ex As Exception TR.Rollback() closecon() Throw ex End Try Next TR.Commit() closecon() Return OrderID End Function
Я пытался установить
IGNORE_DUP_KEY = ONно это исключает из деталей заказа любые элементы, вставленные несколько раз.
Пожалуйста помочь
Спасибо
Graeme_Grant
Поле первичного ключа предназначено только для уникальных значений. Удаление его перед добавлением в таблицу не исправит ситуацию. Вам нужно изменить схему таблицы, чтобы изменить ее поведение.