찾다

 >  Q&A  >  본문

인덱스가 변경될 때 한 테이블에서 다른 테이블로 행을 복사하는 SQL 작업

상태 설명

두 개의 데이터베이스가 있습니다, DB1DB2,它们具有相同的表 Author,其中字段为 Author.IDAuthor.AuthorName.

DB1.AuthorAuthor.ID 필드 DB1.AuthorAuthor.ID 字段 AUTO_INCRMENT,而 DB2.Author 没有 AUTO_INCRMENT,因为它依赖于 DB1에는

AUTO_INCRMENT가 있지만 DB2.Author

에는 Author.ID 上的 PRIMARY 索引和 Author.AuthorName AUTO_INCRMENT가 없습니다. DB1 데이터 정확성.

두 테이블 모두 DB2.Author 具有从 DB1.Author에 대한 고유 인덱스를 가지고 있습니다.

복사된 줄입니다.

두 데이터베이스 모두
MariaDB

버전 10.6.7을 사용합니다.

질문DB1 管理员删除了 DB1.Author

테이블의 일부 항목을 확인한 다음 색인을 다시 정렬하여 색인 번호에 공백이 없도록 합니다. 이는 그들이 다음을 가질 수 있음을 의미합니다: ID저자 이름1하나2비3C

AuthorName'B'

그런 다음 그들은 다음 줄을 삭제했습니다 : ID저자 이름1하나3C

드디어 공백이 없도록 인덱스를 업데이트했습니다(3-C가 2-C로 변경됨): ID저자 이름1하나2C

DB1.Author 复制到 DB2.Author 而不删除 DB2.Author 表中的所有内容,这样我就不会'不会丢失 CASCADE

이제 DB2.Author를 삭제하지 않고 DB1.Author에서 DB2.Author로 행의 업데이트된 상태를

복사하는 방법을 찾아야 합니다. > CASCADE 효과에 대한 데이터가 손실되지 않도록 표에 있는 모든 내용
.

가장 좋은 방법은 무엇인가요?

ID 2 会尝试插入 'C' 的重复值,因为它ID내 사진


내가 그렇게 했지만 중복 키의 경우 다른 중복 키를 생성하려고 시도하기 때문에 분명히 작동하지 않습니다(중복 은(는) 3에 이미 존재합니다): 으아아아

다른 방법이 있나요? 🎜🎜 🎜가능한 SQL 쿼리 솔루션 외에 다른 데이터베이스에서 데이터가 변경될 때 한 데이터베이스의 테이블 데이터를 자동으로 업데이트할 수 있는 다른 방법이 있나요? 일부 테이블만 복사하면 되고 다른 연결된 테이블은 복사하면 안 됩니다. 🎜
P粉459440991P粉459440991234일 전368

모든 응답(1)나는 대답할 것이다

  • P粉296080076

    P粉2960800762024-03-31 00:34:23

    TL;DR, 문제는 데이터베이스 관리자입니다. 해결책은 데이터를 이전 상태로 복원하여 피해를 복구하는 것입니다. 행을 삭제하면 됩니다. 기본 키 업데이트는 작동하지 않습니다.

    실수를 해결하기 위해 해결책을 만들거나 검증하지 마세요. 그렇게 하면 같은 일이 다시 일어날 가능성이 높아집니다.


    완전한 답변.

    실제 문제는 데이터베이스의 기본 규칙을 위반하는 "데이터베이스 관리자"입니다. 대리 키 값을 업데이트하지 마세요!

    귀하의 경우에는 ID 열 값의 공백이 어쨌든 중요하지 않기 때문에 상황이 더욱 비극적입니다. 격차가 중요하다면 상황은 더욱 악화됩니다. 설명해주세요...

    저작자 이름은 귀하의 실제식별자입니다. 고유한 제약 조건이 있기 때문에 이를 알고 있습니다.

    ID 열은 대리 키이며 자동 증가 정수로 가장 편리하게 구현되지만, 대리 키가 임의의(고유) 숫자인 경우에도 대리 키가 제대로 작동합니다. 차이 또는 값 자체의 선택은 대리 키의 유효성과 아무 관련이 없습니다.

    회신하다
    0
  • 취소회신하다