Използвам batchUpdate()
за да вмъкнете няколко записа в таблица. Според изискването, ако има дублираща се стойност за първичен ключ, докато го вмъквате, трябва да се актуализира с последните получени данни, затова се опитвах да го използвам ON DUPLICATE KEY UPDATE
в INSERT
изявление. Най- ON DUPLICATE KEY UPDATE
работи добре, когато използвам единична вложка, но дава грешка, когато я използвам batchupdate()
за същата заявка. Грешката е, както следва:
Тестова кутия: testVehicleTracking (com.em.ert.test.TrackingServiceTest): причини грешка PreparedStatementCallback; лоша SQL граматика [INSERT IN test_tracking (sino, material_id, material_type, vehicle_position, rundown_num, msg_type, msg_status, msg_timestamp) VALUES (?,?,?,?,?,?,?,?) ВЪРХУ ДУПЛИКАТ КЛЕ АКТУАЛИЗАЦИЯ]; вложеното изключение е java.sql.BatchUpdateException: Имате грешка в SQL синтаксиса; проверете ръководството, което съответства на версията на сървъра MySQL, за да се използва правилният синтаксис в близост до линия "1"
Аз не получавам защо ON DUPLICATE KEY UPDATE
не работи с batchupdate (). В идеалния случай това би трябвало, тъй като в работата няма нищо друго, доколкото виждам.
Какво трябва да правя за постигането на това?
Отговори:
2 за отговор № 1Липсва присвояване на колона след На клауза DUPLICATE KEY UPDATE.
13.2.5. INSERT Синтаксис
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
13.2.5. INSERT Синтаксис
13.2.5.3. ВЪВЕЖДАНЕ ... ВЪРХУ АКТУАЛИЗИРАНЕ НА КЛЮЧА В ДУПЛИКАТ Синтаксис