웹 응용 프로그램 프로젝트에서 작업 중이며 데이터가 테이블에 저장되어 있어야하는 다소 큰 HTML 양식이 있습니다. 양식과 삽입은 이미 완료되었지만 고객이 저장된 데이터를 HTML 양식으로 다시로드하여 변경할 수 있기를 원합니다. 다시 말하지만, 이것은 문제가되지 않지만 업데이트를 수행 할 때 질문을하게됩니다. , 그냥 삽입 쿼리를 유지하고 편집하는 경우 이전 행을 삭제하는 것이 적절할까요?MySQL 업데이트와 INSERT 및 DELETE
기본적으로 양식이 제출되면 모든 데이터가 INSERT를 사용하여 테이블에 저장되고 기존 필드가 업데이트되는 경우 기본 키 ID가 포함 된 edit 플래그도 있습니다. . 업데이트 기능을 두 가지 방법으로 처리 할 수 있습니다.
a) 모든 필드/데이터 세트로 실제 업데이트 쿼리를 만들고 if/else를 사용하여 업데이트를 실행할지 또는 쿼리를 삽입할지 결정하십시오.
b) 매번 삽입합니다. 단, 삽입이 성공하면 DELETE WHERE 행 = editID에 한 줄을 추가하십시오.
삽입이 성공한 경우에만 삭제가 발생하므로 삽입하지 않고 데이터를 삭제할 위험이 없으므로 데이터가 손실되지만 INSERT/DELETE는 두 가지 쿼리이므로 단지 효율성이 떨어집니다 if/else를 사용하여 삽입 또는 업데이트를 실행할 것인지 결정하십시오.
자동 증가 ID를 외래 키로 사용하는 두 번째 테이블이 있지만 양식이 제출 될 때마다이 테이블을 업데이트해야하므로 테이블 A의 행을 삭제하면 삭제됩니다. 테이블의 관련 행 b. 이것은 나쁜 프로그래밍 실습처럼 보입니다. 그래서 나는 옵션 a)에 기대고 있습니다. 그러나 어쨌든 단일 라인 옵션을 사용하는 것은 매우 유혹적입니다. DELETE는 기본적으로 다음과 같습니다. 사실 나쁜 프로그래밍 습관이 될 것입니까? 컨벤션을 제외하고, 이것이 "결코 그렇게하지 않는"어떤 이유가 있습니까? 코드 유형?
if ($insertFormResults) {
$formId = mysql_insert_id();
echo "Your form was saved successfully.";
if(isset($_POST['edit'])){
$query = "DELETE FROM registerForm WHERE id='$_POST[edit]'";
$result = mysql_query($query);
}
}
[MySQL의 LAST_INSERT_ID] (http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html)를 사용하면 자동 증가 값을 얻을 수 있습니다. UPDATE 문. 삭제하면 참조 무결성에 영향을 미치지 않으면 서 자동 증가 값이 불필요하게 증가합니다. –