#java #android #mysql #sql #database
Вопрос:
Я пытаюсь обновить данные в Mysql или обновить, если они существуют, но я получаю эту ошибку:
#1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного использования синтаксиса рядом с разделителем’;
вызовите insertIfNotNull((ВЫБЕРИТЕ checkin_id ИЗ `_9′ в строке 1
Это запрос, который я использую для обновления или вставки данных:
DROP FUNCTION IF EXISTS insertIfNotNull;
delimiter $
create function insertIfNotNull(checkin int(11))
returns int
BEGIN
IF checkin IS NOT NULL THEN
UPDATE `_914_table_checkin` SET clock_in = '2021-6-15 12:09:20', break_in = 'null', break_out = 'null', clock_out = '2021-6-15 12:09:41' WHERE checkin_id = checkin ;
ELSE
INSERT INTO `_914_table_checkin` (company_id, manager_id, worker_id, added_by, clock_in, break_in, break_out, clock_out, date) VALUES (4,214,225,'manager','2021-6-15 12:09:13','null','null','2021-6-15 12:09:34','2021-6-15');
end if;
return 2;
END
$
delimiter;
call insertIfNotNull((SELECT checkin_id FROM `_914_table_checkin` WHERE company_id = 4 AND manager_id = 214 AND worker_id = 214 AND date = '2021-6-15'))
Комментарии:
1. Интересно, не в том ли проблема, что используемый вами API ожидает только одного оператора.
2. Я пытаюсь сделать это напрямую из phpMyAdmin
3.
2021-6-15 12:09:20
может быть, действительная дата?2021-06-15 12:09:20
4. Это действительно так. Это работает, когда я использую его как отдельное утверждение, например
UPDATE _914_table_checkin SET clock_in = '2021-6-15 12:09:20', break_in = 'null', break_out = 'null', clock_out = '2021-6-15 12:09:41' WHERE checkin_id = 200 ;
5. Я думаю, вам просто нужен пробел после разделителя
Ответ №1:
Вы неправильно _914_tabela_checkin
ввели последнюю строку. Это должно быть:
call insertIfNotNull((SELECT checkin_id FROM `_914_table_checkin` WHERE company_id = 4 AND manager_id = 214 AND worker_id = 214 AND date = '2021-6-15'))
Комментарии:
1. Это была техническая ошибка, когда я задал этот вопрос. Проблема не в этом