MySQL 테이블명 변경시 뷰 오류

MySQL 테이블명 변경시 뷰 오류

1 예시[ | ]

employee와 department 테이블을 참조하는 emp_dept 뷰 생성
mysql> SELECT * FROM emp_dept;
+----+-----------+---------------+------------+-----------------+
| id | name      | department_id | birth_date | department_name |
+----+-----------+---------------+------------+-----------------+
|  1 | 한놈      |             1 | 1999-01-01 | 영업팀          |
|  2 | 두시기    |             2 | 2000-01-01 | 개발팀          |
|  3 | 석삼      |             2 | 1999-01-01 | 개발팀          |
|  4 | 너구리    |             2 | 2000-01-01 | 개발팀          |
+----+-----------+---------------+------------+-----------------+
4 rows in set (0.00 sec)
mysql> RENAME TABLE employee TO employee2;
Query OK, 0 rows affected (0.05 sec)
mysql> SELECT * FROM emp_dept;
ERROR 1356 (HY000): View 'mydb.emp_dept' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
→ 참조하는 employee 테이블을 찾지 못해 오류 발생
mysql> RENAME TABLE employee2 TO employee;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM emp_dept;
+----+-----------+---------------+------------+-----------------+
| id | name      | department_id | birth_date | department_name |
+----+-----------+---------------+------------+-----------------+
|  1 | 한놈      |             1 | 1999-01-01 | 영업팀          |
|  2 | 두시기    |             2 | 2000-01-01 | 개발팀          |
|  3 | 석삼      |             2 | 1999-01-01 | 개발팀          |
|  4 | 너구리    |             2 | 2000-01-01 | 개발팀          |
+----+-----------+---------------+------------+-----------------+
4 rows in set (0.00 sec)
→ 원래대로 바꿔주면 잘됨
→ 결론: 뷰의 참조는 느슨하게 연결되어 있음[1]
→ 참조대상을 찾지 못하면 오류 발생하지만, 다시 만들어주면 정상 사용가능 ★

2 같이 보기[ | ]

3 주석[ | ]

  1. 참조하는 원본쪽이 변경되어도 원래 참조하던 이름이 그대로 남아 있으므로 조회시 오류 발생
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}