phpMyAdmin을 사용하여 데이터베이스를 설정하고 있습니다. 기본 키에 인덱싱된 두 개의 테이블(foo
및 bar
)이 있습니다. 기본 키를 외래 키로 사용하여 두 테이블 사이에 관계형 테이블(foo_bar
)을 만들려고 합니다.
이 테이블을 MyISAM으로 만들었으나 MyISAM이 외래 키를 지원하지 않는다는 것을 읽었기 때문에 세 테이블을 모두 InnoDB로 변경했습니다. 모든 id
필드는 INT(11)
입니다.
foo_bar테이블을 선택하고 ``관계 보기`` 링크를 클릭한 다음 FK 열을
database.foo.id및
database.bar.id`로 설정하려고 하면 각 열 옆에 정의된 인덱스 없음!
이라는 메시지가 표시됩니다.
제가 뭘 놓친 걸까요?
간단하게 하기 위해 phpMyAdmin을 계속 사용하고 싶습니다. 현재 PHP/CSS/자바스크립트에 집중할 수 있을 정도로 쉬운 XAMPP를 사용하고 있는데, phpMyAdmin과 함께 제공됩니다.
또한 아직 명시적인 외래 키를 설정할 수는 없지만 관계형 테이블이 있고 이와 같은 조인을 수행 할 수 있습니다:
SELECT *
FROM foo
INNER JOIN foo_bar
ON foo.id = foo_bar.foo_id
INNER JOIN bar
ON foo_bar.bar_id = bar.id;
다만 데이터베이스에 명시적으로 FK를 정의하지 않은 것이 불편할 뿐입니다.
phpMyAdmin을 사용하여 관계를 설정하려면 두 가지 작업을 수행해야 합니다. 먼저 참조 테이블의 외래 키 열에 인덱스를 정의해야 합니다(예: foo_bar.foo_id). 그런 다음 관계 보기(참조 테이블에서)로 이동하여 참조 열(이 경우 foo.id)과 업데이트 시 및 삭제 시 작업을 선택합니다.
외래 키는 여러 테이블이 서로 연결되어 있는 경우 유용하며, 특히 참조 옵션을 올바르게 설정하면 삭제 스크립트가 매우 짧아집니다.
편집: 두 테이블 모두 InnoDB 엔진이 선택되어 있는지 확인하세요.
phpMyAdmin을 사용하면 <관계> 보기를 사용하여 외래 키를 정의할 수 있습니다. 그러나 MySQL은
CHILD라는 테이블의 PID 열이 PARENT라는 테이블의 ID 열을 참조하도록 외래 키를 설정하려면 다음을 수행하면 됩니다:
CHILD 테이블에서 내보내기를 수행하면 PID 열에 대해 외래 키 제약 조건이 생성된 것을 볼 수 있습니다.
이는 위키백과 문서 요약. Phpmyadmin 에서 서로 다른 유형의 관계를 지정하는 것으로 규정하고 있습니다. 나는 여기에 관련된 의견을 내놓고 있기 때문에 @Nathan& 외래 키 설정 옵션, s # 39 의 " update/delete"; 하지만 너무 커서 셀명 - 희망을 줍니다.
행의 때마다 정의마스터 (referenced) 테이블 삭제됩니다 (레스피 업데이트되도록), 해당 행뿐만 자식 (참조) 일치하는 외래 키 열은 삭제할 수 있는 테이블 (레스피 업데이트되도록) 잘 알려져 있다. 이를 케스케이드 삭제 (레스피 업데이트 [2]).
한 때 또는 삭제할 수 없는 값을 행을 참조하는 외래 키 테이블이 존재하는 업데이트되어야 의 값이 referenced 표. 마찬가지로, 행을 삭제할 수 없습니다 deltamove 좁히어 참조입니다 it 에서 외래 키 표.
NO ACTION) 및 제한할 매우 안타까워하고 있다. 주요 차이점은 아무 조치도 없이 작업을 하는 것은 참조 무결성을 확인 후 및 제한할 완료되어도 변경하십시오 표. 업데이트를 실행할 수 있도록 제한할지 높여줍니까 확인란 시도하기 전에 삭제할지를 발표했다. 참조 무결성 체크 실패할 경우 모두 동일한 작업 등에 관한 법률 (참조: 업데이트 삭제할지를 기술서임을 오류가 발생합니다.
이 때 NULL 행을 참조하는 외래 키 값으로 설정되어 referenced 행일 업데이트되도록 또는 삭제된. 이 경우 참조하는 테이블의 각 열의 누얼바이 있다 때만 가능하다. Null 행을 참조하는 외래 키, a 로 인해 열이 있는 시맨틱스를 null referenced 행일 필요하지 않습니다.
Null 행을 참조하는 외래 키 값을 설정할 수 있는 비슷한 설정되어 있는 경우 기본 열 (row referenced 업데이트되도록 또는 삭제된.
Phpmyadmin 에서 자사의 GUI 간단히 외래 키 지정할 수 있습니다. 테이블 및 gnu. orghttp://www. 구조 탭을 클릭합니다. 뷰 테이블 (아래 참조) 이미지) 의 관계식을 찾을 그냥 벨로.
이 목록에서 기본 키 기입란 근처의 주요 기업과 지정할 수 있습니다. (아래 이미지 참조). 및 저장
sql 쿼리를 .해당 자동으로 생성된 처형되었다.
새로운 사람들을 위한 데이터베이스. 기존 표를 변경할 필요가. 항상 뭔가 셨으며 매우 간단하지만 꽤 많은 것 같습니다. a, b 사이에
무엇보다도 살펴 이.
Child_table_name 변경 테이블 외래 키 (P_ID) 추가 참조입니다 parent_table_name (P_ID)
InnoDB에서는 ALTER TABLE을 사용하여 테이블에 새로운 외래 키 제약 조건을 추가할 수 있습니다:
ALTER TABLE tbl_name
ADD [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
반면에 MyISAM이 사용자의 컨텍스트에서 InnoDB보다 유리하다면 외래 키 제약 조건을 만들 이유가 전혀 없습니다. 이 문제는 애플리케이션의 모델 수준에서 처리할 수 있습니다. 외래 키로 사용하려는 열이 인덱싱되어 있는지 확인하기만 하면 됩니다!
1 단계: 선 추가해야 합니다. 기본 스토리지 엔진 = innodb [mysqld] 아래 섹선에서 너회의 mysql 구성 파일 (또는 마이오니 my. cnf 따라 OS) 를 재시작하십시오 mysqld 서비스용입니다. ! [입력하십시오. 이미지 여기에 설명을] [1]
2 단계: 이제 표를 만들 때 표를 유형을 볼 수 있습니다. InnoDB
3 단계: 부모와 자식 표 모두 만들 수 있습니다. 신청 후 하위 테이블을 와-u 열 수 있는 등 외래 키: 인덱스 키 작업에서 아래와 같이 레이블에만 선택합니다.
4 단계: 근처에 있는 테이블 아래에서 인쇄 보기 보기 신청 관계 같은 자식 아래와 같이.
! [입력하십시오. 이미지 여기에 설명을] [4] 5 단계: 열을 선택한 상위입니다 선택할 수 있는 등 해외 U 키를 열 드롭다운에서 선택. 데브나미스터블나미스콜럼나메
에 대한 적절한 값을 선택하여 업데이트 및 삭제 ! [입력하십시오. 이미지 여기에 설명을] [5]
Mysql 에서 공식 문서 dell. https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html:
>. MySQL 单捞磐啊 indexe 대한 해외 키와 키가 referenced 도왔으매 >. 외래 키 검사가 필요하지 않은 테이블 스캑 파르게 수 있습니다.
그러나 이 경우 모든 사람에게 유용한 오토메이티드 스레드할 때문에 이전.
단계 1. * InnoDB 설정되었습니다 고객의 Db 저장 엔진
단계 2*. 기본 테이블 작성
here '고객' 는 기본 테이블 및 'customer_id' 는 기본 키
여기서는 ',' 고객 '으로 customer_addresses 관련 테이블 및 저장' 고객 '표' 와 관련해 customer_id 충족합니다 여기에서
인덱스화할 아래와 같이 테이블을 작성할 때 직접 선택할 수 있습니다