2015-10-11 3 views
0
INSERT INTO 'rozliczenia' ('userid', 'data', 'stawka') VALUES ('1', '2015-11-01', NULL) ON DUPLICATE KEY UPDATE stawka = COALESCE(VALUES('stawka'), 'stawka'); 

Он должен проверить значение NULL. Если это так, не обновляйте столбец premia (у меня нет нулевых значений в таблице), но он обновляет его до 0. Почему? Вчера все прошло хорошо.Mysql Coalesce возвращает 0 вместо фактического значения

Перед обновление:

Premia 200

После

Premia 0, хотя это должно быть 200

Индексы в таблице:

Primary - Id

Уникальные - данные

Unique - Идентификатор_пользователь

ЭТО НЕ О котировках, КОГДА ИХ ЗАМЕНА он ведет себя точно так же,

+0

какого ключа на столе –

+0

я обновил пост, так что вы можете увидеть –

+0

Это не о котировках –

ответ

0

У вас есть одинарные кавычки имен таблиц и столбцов, поэтому ваш запрос не должен работать.

INSERT INTO rozliczenia(userid, data, stawka) 
    VALUES ('1', '2015-11-01', NULL) 
    ON DUPLICATE KEY UPDATE stawka = COALESCE(VALUES(stawka), stawka); 

Причина coalesce() возвращается 0 потому, что вы передаете в строку, а затем использовать его в числовом контексте. Строка, которая не начинается с цифры, заканчивается 0 в таком контексте.

Повторяйте, пока вы не поймете это полностью: «Я буду использовать только одинарные кавычки для констант строки и даты».

+0

пожалуйста, вы можете удалить дублирование ..... видеть, что вы получите ошибку –

+0

Теперь это дает мне ошибки Column stawka не может быть null –

+0

Почему это происходит –

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