보기에 대한 외부 키 만들기
문제:뷰의 열에 외부 키를 생성하려고 합니다.뷰는 로서 작성되었습니다.SELECT *
사용 중인 열의 기본 키 제약 조건이 있는 다른 스키마에서 가져옵니다.
이게 가능합니까?만약 그렇다면, 이것은 나쁜 관행으로 간주됩니까?그렇지 않다면 다른 방법이 있을까요?phpmyadmin에서는 불가능할 것 같고 뷰에 프라이머리 키를 만들 수 없습니다.
이유: 2개의 다른 응용 프로그램에 대해 2개의 스키마를 사용했는데, 다른 스키마에 대한 권한을 부여하지 않고 스키마 내에서 재사용하고 싶은 스키마에는 (mysql.user 테이블에 반드시 사용자가 있는 것은 아닙니다) 'user' 테이블이 있습니다.이래서 뷰를 사용했어요.
아니, 그건 불가능해.
MySQL 포럼 게시물을 참조하십시오.
참조된 테이블에는 참조된 열이 첫 번째 열로 나열되는 인덱스가 있어야 합니다.
뷰가 구체화되었습니다.기본적으로 가장 왼쪽에 인덱스가 있는 테이블이 아닙니다.뷰는 시간(작성 시점)의 스냅샷이기도 합니다.현재 스키마에 대한 선호도가 떨어질 수 있으며, 다음에 사용할 때까지 알 수 없습니다.그래서, 여러 가지 이유로, 그들은 FK를 FK로 사용할 후보자가 될 수 없을 것이다.target
는, 이른바 참조되고 있습니다.
보기를 만든 후에는 정의가 참조하는 테이블 또는 보기를 삭제하거나 변경할 수 있습니다.뷰 정의에서 이런 종류의 문제를 확인하려면 CHECK TABLE 문을 사용합니다.
뷰가 스냅샷이라고 부르는 이유.어느 시점에서든 유효성이 크게 훼손될 수 있습니다.FK가 참조한 후보가 아닙니다.
뷰를 사용하는 대신 다른 (공유) 스키마를 생성하여 테이블을 이동할 수 있습니다.이를 통해 제한된 스키마에 대해 단일 테이블 권한을 부여하지 않고도 테이블을 재사용할 수 있습니다.@Drew가 말했듯이 뷰에 인덱스를 만들 수 없기 때문에 뷰에 외부 키 제약 조건을 만들 수 없습니다.
언급URL : https://stackoverflow.com/questions/38112999/create-foreign-key-to-a-view
'programing' 카테고리의 다른 글
포인트별 MySQL MariaDB 그룹 타임스탬프 (0) | 2022.09.14 |
---|---|
MySQL은 단일 행에서와 같이 최소 열과 최대 열에 대해 일치하는 행을 가져옵니다. (0) | 2022.09.14 |
MariaDB 루트 사용자에 대해 암호 및 unix_socket 인증을 사용하도록 설정하시겠습니까? (0) | 2022.09.14 |
Internet Explorer 브라우저용 JavaScript에서 Array indexOf()를 수정하는 방법 (0) | 2022.09.14 |
오프셋이란높이, 클라이언트높이, 스크롤 높이? (0) | 2022.09.13 |