вставить, если строка не существует, обновить строку - PullRequest
0 голосов
/ 04 марта 2020

У меня есть автоматически увеличенное поле в таблице голосов, где пользователь может голосовать за сообщение и за него. Если пользователь запрашивает голосование по посту, я хочу проверить таблицу, чтобы узнать, проголосовали ли они уже (вниз или вверх).

, если пользователь уже проголосовал против и вставлена ​​запись, и на этот раз он хочет перейти к голосованию с повышением: я просто хочу обновить запись и установить статус голосования равным 1, аналогично, если пользователь запросит голосование с понижением и запись вставлена ​​тем же пользователем, просто обновите запись и установите статус столбца. на 0.

Я написал SQL для выполнения этой работы, но он вызывает ошибку в сетевой консоли: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать около 'ОБНОВИТЬ голоса VT SET VT.vote_status =' 1 ', VT.vote_time =' 1583319756 '' в строке 8

У меня есть поиск пара примеров, но это не сработает. Я не хочу использовать sql ON DUPLICATE KEY Я прочитал его только для дублирования уникального ключа.

Я хочу проверить, совпадают ли 2 или 3 столбца с существующей записью, которую нужно вставить, а затем обновить вставку.

Как мне этого добиться?

мой код:

IF EXISTS (
                SELECT * FROM $votes_table VT WHERE VT.vote_ask_id='{$Qid}' 
                AND VT.vote_type='{$vote_type}' 
                AND VT.vote_status='{$vote_down_status}'
                AND VT.vote_user_id='{$CUid}'

                ) 
    UPDATE  $votes_table VT SET 
            VT.vote_status = '{$vote_up_status}',
            VT.vote_time='{$current_time}' 
            WHERE VT.vote_user_id = '{$CUid}' 
            AND VT.vote_ask_id = '{$Qid}' 

    ELSE    INSERT INTO $votes_table(vote_ask_id,vote_type,vote_status,vote_user_id,vote_time) 
            VALUES('{$Qid}','{$vote_type}','{$vote_up_status}','{$CUid}','{$current_time}')

1 Ответ

0 голосов
/ 04 марта 2020

Рекомендую изменить функцию обновления и вставить. Вы можете использовать «Объединить в»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...