У меня есть таблица с полем AUTO_INCREMENT, определенным как PRIMARY_KEY.
У меня есть такие столбцы: перед тем, как сделать это, я хочу проверить, есть ли строка со столбцами (voice_user_id, voice_ask_id, voice_type), совпадающая с новыми данными, которые я хочу вставить.
CONDITIONS:
IF ROW EXISTS
THEN UPDATE tableName SET vote_status=new_value, vote_time=new_time
ELSE
INSERT NEW RECORDS
Я искал inte rnet и узнал о MySQL ..ON DUPLICATE KEY UPDATE. Я понимаю, что это утверждение не будет полезным для моей задачи, поскольку оно проверяет только DUPLICATE KEY (... PRIMARY_KEY или UNIQUE FIELD). Я также узнал о MySQL REPLACE INTO ... и также это не поможет моей проблеме, поскольку она также связана с индексом PRIMARY_KEY или UNIQUE.
Я узнал, что могу использовать MERGE .... ИСПОЛЬЗУЯ ... заявления, но это приводило меня к ошибкам, поэтому я прочитал об этом больше, и я понял, что это работает только на SQL сервере (Microsoft)
Пожалуйста, как кто-нибудь может помочь мне решить эту проблему?
Я пробовал это на постах MERGE:
MERGE {$votes_table} WITH (HOLDLOCK) AS VT
USING ({$Qid},{$vote_type},{$CUid},{$vote_status}) AS VTS (vote_ask_id,vote_type,vote_user_id,vote_status)
ON( VT.vote_ask_id = VTS.vote_ask_id AND VT.vote_user_id=VTS.vote_user_id AND VT.vote_type=VTS.vote_type)
WHEN MATCHED THEN
UPDATE SET VT.status=VST.vote_status , VT.vote_time='{$current_time}' WHERE VT.vote_user_id=VTS.vote_user_id AND VT.vote_ask_id=VTS.vote_ask_id AND VT.vote_type=VTS.vote_type
WHEN NOT MATCHED THEN INSERT (vote_ask_id,vote_type,vote_status,vote_user_id,vote_time) VALUES('{$Qid}','{$vote_type}','{$vote_up_status}','{$CUid}','{$current_time}')