2013-02-08 3 views
0

레코드가 있으면 해당 레코드를 업데이트해야한다는 요구 사항이 있습니다. 나는 이것이 몇 번 질문 받았지만 내 문제는 조금 더 까다 롭다고 생각한다.다른 레코드가있는 경우 레코드 업데이트

setting_id | token | setting_value | setting_for 
1     1   on     background 
2     1   off     vibrate 
3     2   on     vibrate 

이 내가 필요하면 그래서 나중에 검색 할 수있는 원격 DB에 사용자 설정을 저장하는 모바일 앱입니다 :

나는 테이블 (tbl_settings)가 있습니다.

Setting_id는 고유하고 자동 증가합니다.

토큰

Setting_value가

Setting_for 설정 특정 설정을 실제의 이름은 (온/오프) 값인 장치 ID 토큰으로 (특정 사용자)를 가고

이제는 사용자가 사용할 수있는 4 가지 설정 옵션이 있습니다.이 옵션은 개별 시간 (사용자가 설정을 켜기/끄기로 변경 한 경우) 또는 더 나은 경우 함께 사용할 수 있습니다.

사용자가 진동 설정을 변경하면 진동 및 토큰이 존재하는지 확인하는 쿼리가 필요합니다. 특정 레코드를 업데이트하려면 토큰 set_value 및 setting_for를 삽입하십시오.

단일 쿼리에서 가능합니다. 그렇지 않다면 여러 쿼리를 사용합니다. 하나는 존재하는지 확인하고 다른 하나는 삽입 또는 업데이트합니다. 당신이 당신의 setting_id (어쨌든 무의미 해 보인다) 및 사용을 드롭해야 두 경우 모두 점에 유의 마십시오

:

+0

자동 증가 키는이 상황에서 매우 나쁜 생각처럼 보입니다. token과 setting_for에 기반을 둔 복합 키는 훨씬 좋은 아이디어처럼 보입니다. –

답변

0

MySQL은이 두 가지 옵션을 제공합니다 복합 기본 키.

+0

고마워요. 나는 복합 키가 존재하거나 그들이 실제로 어떻게 작동했는지조차 몰랐다. – puks1978

관련 문제