>  기사  >  백엔드 개발  >  PHP는 이전 연결과 새 연결을 어떻게 처리합니까?

PHP는 이전 연결과 새 연결을 어떻게 처리합니까?

WBOY
WBOY원래의
2016-12-01 00:25:341630검색

예를 들어 A와 B는 일대다이고 A에는 B의 n개 레코드가 있으며 ID는 (1, 2, 3, 4)입니다. 이제 (3, 4, 5, 6)으로 제출됩니다. ), A와 B를 업데이트해야 합니다. 관계 B는 (3, 4, 5, 6)입니다. 원래 관계(1, 2, 3, 4)를 먼저 삭제한 다음 (3, 4, 5)를 삽입해야 합니다. , 6)? 아니면 업데이트하기 전에 이전 데이터를 꺼내서 새 데이터와 비교하시겠습니까?

답글 내용:

예를 들어 A와 B는 일대다이고 A에는 B의 n개 레코드가 있으며 ID는 (1, 2, 3, 4)입니다. 이제 (3, 4, 5, 6)으로 제출됩니다. ), A와 B를 업데이트해야 합니다. 관계 B는 (3, 4, 5, 6)입니다. 원래 관계(1, 2, 3, 4)를 먼저 삭제한 다음 (3, 4, 5)를 삽입해야 합니다. , 6)? 아니면 업데이트하기 전에 이전 데이터를 꺼내서 새 데이터와 비교하시겠습니까?

색인이 없으면 delete를 먼저 사용한 다음 insert을 사용하겠습니다.
그러나 색인이 있는 경우에는 다음 방법을 먼저 update 사용한 다음 insert을 사용합니다.

  1. 관계 테이블에 is_deleted 필드를 추가합니다. 기본값은 0입니다. is_deleted은 관계 종료 여부를 표시하는 데 사용됩니다.

  2. 실행SQL (동일한 관계에 대해서는 하나의 레코드만 존재함)

    <code>> `UPDATE table SET is_deleted = 1 WHERE id1=A;`
    > `REPLACE INTO table (id1, id2, is_deleted) VALUES('A',3,0), ('A',4,0);`
    </code>

비교 방법 코드가 복잡하고 데이터 항목을 추가하는 것은 작은 재앙이며 유지 관리가 어렵습니다

방법 1:

질문에 언급된 내용을 모두 삭제하고 삽입하세요

방법 2:

단일 관계를 삭제하고 단일 관계를 추가하여 별도의 인터페이스를 생성합니다.
관계 삭제마다 관계 연산을 추가하고 해당하는 별도의 인터페이스를 호출합니다

간단하고 투박해서 먼저 삭제한 후 삽입하세요.

비교를 위해 이전 데이터를 꺼내는 것이 좋습니다.

먼저 삭제한 후 삽입과 동시에 아카이브 필드를 추가하고 문자열로 저장하고 특수 기호를 사용하여 이번 시간을 이전 관계와 구분하고 추가합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.