2014-12-06 5 views
0

행이없는 경우 행을 입력하는 MySQL 및 PHP 스크립트가 있습니다.MySQL 스크립트가 올바르게 입력되지 않습니다.

INSERT INTO `tblPlayerAchievements` (HS_ID, AchievementID, AchievementProgress) 
SELECT * FROM (SELECT ".$userData['HS_ID'].", ".$achievementID.", 0) AS tmp 
WHERE NOT EXISTS (SELECT * FROM `tblPlayerAchievements` 
WHERE HS_ID=".$userData['HS_ID']." AND AchievementID=".$achievementID.") 
LIMIT 1 

이렇게하면 $ userData [ 'HS_ID']와 $ achievementID가 같은 값이되고 그 값을 건너 뛰기 전까지는 완벽하게 작동합니다. 이 문제를 어떻게 해결할 수 있습니까?

+1

[매우 단순한 일을하는 매우 복잡한 방식처럼 들립니다.] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

+0

행을 입력해야합니다. 그것이 존재하지 않으면. 이렇게하지 않으면 어떻게해야합니까? –

+0

* 존재하면 어떻게해야합니까? –

답변

1

행이 존재하면 어떻게되는지에 대한 질문에 답하지 않으므로 INSERT을 실패 시키려한다고 가정합니다. 이 경우 (HS_ID, AchievementID)UNIQUE 색인을 작성하면됩니다. 0의 기본값을 AchievementProgress으로 설정하여 쿼리에서 행을 만들 때 ID 만 지정하면됩니다.

+0

내가 삽입해야하는 이유에 대해 대답했습니다. 그래서 나는 나중에 그 정보를 기억할 수 있습니다. - 미안해, 미안하다. 편집 해 주셔서 감사합니다. 네, 존재한다면 실패 할 필요가 있습니다. –

+0

HS_ID와 AchievementID는 연결된 기본 키입니다. HS_ID와 AchievementID가 같은 값이 될 때까지 다른 모든 항목에서 작동합니다. 그런 다음 삽입이 실패합니다. –

+0

그럼 정확히 ... 쿼리에서 정확히 수행 할 작업을 원하십니까? –

관련 문제