나는 다음과 같은 동작이있는 쿼리를 만들려고와 MySQL의 문제 : 경우IF 문 및 TIMESTAMP
- 가 새 행을 삽입을
:id = NULL
또는id = :id
아직 존재하지 않는 행. id = :id
이 이미 존재하는 행이 있으면 기존 행을 업데이트하십시오.status <> :status
의- 현재 값 :
- 는
NOW()
경우에activated
의 값을 설정합니다. (일명,status
의 값이 변경되는 경우) :status = 'active'
의 값입니다.
이 작업을 수행하기 위해, 나는 다음 준비된 문을 만들었습니다. (일명 status
의 새로운 값은 'active'
될 것입니다) :
INSERT INTO test
(`id`, `title`, `status`, `activated`)
VALUES
(:id, :title, :status, NULL)
ON DUPLICATE KEY UPDATE
id = LAST_INSERT_ID(id),
status = VALUES(status),
activated = IF(status <> VALUES(status) AND VALUES(status) = 'active',
NOW(), activated);
지금까지 내가 볼 수 있듯이,이 문은 필요한 논리를 정확하게 설명합니다. 그러나 activated
의 값은 status
의 값이 'active'
으로 변경 되든 상관없이 항상 변경되지 않습니다.
내가 뭘 잘못하고 있다고 설명 할 수 있습니까? 그리고 (선호) 그것을 고치는 방법을 설명하십시오?
이봐, 나는 생각하지 않았다! 나는 그것을 지금 시험해 볼 것이다 :) –
Allright! 그것은 작동합니다! 요아킴 많이 고맙다! –