2015-03-01 6 views
-2

Это мой SQL столбцы: ItemID, ItemName, единицы, количество, UnitCost, Total, СтатусC# (дублирование KEY UPDATE) Ошибка

ItemID мой штрихкод номер и первичный ключ. Количество является целым числом и имеет значение приращения идентификатора 1.

Если вы вызываете тот же запрос sql дважды, он не позволяет дублировать первичный ключ.

Что я хочу: Если запрос был вызван дважды, увеличьте значение количества на 1 и удвоьте значение UnitCost, которое будет помещено в раздел «Всего».

Моя идея заключалась в том, что если это был дублирующий ключ, то просто обновите его.

ON DUPLICATE KEY UPDATE SET 

, но я получаю ошибки повсюду.

string sql = @"INSERT INTO Grocery (ItemID, ItemName, Unit, UnitCost, Total, Status) VALUES ('2414', '2414', 'EACH', '1.5', '1.5', 'LP') ON DUPLICATE KEY UPDATE ItemName='changed'"; 
connection.Open(); 
     SqlCeCommand commandInsert = new SqlCeCommand(sql, connection); 
        commandInsert.ExecuteNonQuery(); 
+0

этот вопрос повторяется, пожалуйста, обратитесь к этому http://stackoverflow.com/questions/1197733/does-sql-server-offer-anything-like-mysqls-on-duplicate-key-update – SK2185

ответ

1

Невозможно обновить значения в таблице, вставив их.

Вы должны,

Сначала установите Quantity нормальная integer колонка

Затем проверьте данный элемент уже существует в таблице.

  • Если существует, то обновите Quantity и Total колонны

  • Else вставить элемент в таблицу

Надеется, что это помогает.

+0

Или используйте 'INSERT. .. ON DUPLICATE KEY UPDATE' или слияние для sql-сервера – Prix

+0

Но зачем нам нужно количество в качестве столбца идентификации? –

+0

Помимо идентичности, дубликат ключа для меня не работает. Дает мне ошибку. Строка запроса должна быть многострочной? – Machina

Смежные вопросы