두 개의 테이블이 있는 MYSQL 데이터베이스(phpMyAdmin에 있음)가 있습니다. users
和posts
。两个表都有一个username
列。我想修改posts
表中的username
列,使其从users
表中提取用户名数据,即posts
表中的数据会自动从users
表中更新,并在对users
업데이트가 이루어질 때 테이블이 참조됩니다.
처음에는 이 기능을 구현하기 위해 외래 키를 사용할 수 있다고 생각했는데, 올바르게 이해했다면 외래 키는 상위 테이블의 기본 키에만 연결된다는 뜻이겠죠?
다음 구문이 올바르지 않다는 오류가 발생하지만 힌트/해결책은 제공되지 않습니다.
으아악데이터베이스의 다른 테이블에 있는 열의 데이터를 참조/사용하도록 기존 열을 수정하는 방법은 무엇입니까?
username
列具有相同的类型、大小和属性,即VARCHAR(55) NOT NULL
두 테이블 중 innoDB 스토리지 엔진을 사용합니다.
외래 키는 데이터 무결성 검사일 뿐이며 그 이상은 아닙니다. 하위 테이블의 필드에 상위 테이블의 참조 필드에 나타나는 값이 포함되어 있는지 확인합니다. 그게 다야 *.
외래 키를 사용하여 한 테이블의 데이터를 다른 테이블에 병합할 수 없습니다. 그러나
JOIN
문은 필요한 작업을 정확하게 수행하며 외래 키와 함께 사용하면 각 게시물에 올바른 사용자 데이터를 식별하는 유효한 사용자 이름이 있는지 확인됩니다.다음 예를 들어보세요:
사용자 데이터
으아악게시물
으아악다음 쿼리를 사용하여
으아악userdata
테이블을posts
테이블userdata
表与posts
表进行JOIN
과 비교할 수 있습니다.이 쿼리를 기반으로
으아악VIEW
를 추가로 생성하여 데이터를 반환할 수 있습니다.뷰를 쿼리하려면
으아악SELECT
문을 사용하세요.데모: https://www.db-fiddle.com/f/tbBXvthBtwH7CKu1yjzPjQ/0
* 외래 키를 사용하면 상위 테이블의 업데이트 및 삭제가 하위 테이블로 계단식으로 전달될 수도 있지만 이는 이 문서의 범위를 벗어납니다.