2011-11-16 2 views
1

포럼과 같은 웹 기반 응용 프로그램에서 작동하는 시나리오는 사용자가 자신의 리플레이를 추가하거나 편집 할 수 있습니다. 지금까지 사용해 왔던 전략은 삽입 및 업데이트를위한 다양한 동작을 사용하는 것이 었습니다.삽입 또는 업데이트 - 올바른 방법

이 방법이 맞나요? 아니면 다른 것을 유지할 수 있습니까?

많은 감사!

답변

1

개인적으로 저는 '편집'변수를 단일 양식으로 사용합니다. 양식을 편집 할 때 edit 변수를 true로 설정하고 새 양식을 작성하려면 false로 설정합니다. 이 변수를 (폼의 숨겨진 요소에서) 데이터를 처리하는 페이지로 보냅니다.이 함수는 데이터베이스에 INSERT 또는 UPDATE 여부를 결정합니다.

+0

그러나 편집하는 경우 ID를 보내야합니다. –

+0

확실히, 뭔가를 편집하고 있다면 이미 알고있는 ID입니다. – rogerlsmith

1

하나의 작업 만 사용할 수 있습니다. 기본 키가 요청에 설정되어 있지 않으면 삽입이고, 그렇지 않으면 업데이트입니다.

1

Insert or on duplicate key update은 데이터베이스에있는 ID가 있으면 하나의 양식을 가질 수 있음을 의미합니다. 그렇지 않으면 ID가 업데이트됩니다. 그렇지 않으면 삽입됩니다.

+0

기본 키가 자동 증가 int 인 경우 몇 가지 문제가 발생할 수 있습니다 (주의해서 사용하십시오) – apokryfos

+0

@apokryfos는 가능한 문제에 대한 추가 정보를 제공 할 수 있습니까? –

+0

문제는 LAST_INSERT_ID() 함수가 레코드가 업데이트 되더라도 AUTO_INCREMENT 값을 반환한다는 것입니다. 즉, 일치하는 레코드의 실제 ID를 반환하지 않습니다. 따라서 나중에 LAST_INSERT_ID()를 사용하면 올바른 ID를 확인하는 것입니다. 이것은 페이지에 언급되어 있습니다. – apokryfos

관련 문제