Đáp án: KHÔNG
Trong cùng một database, **View và Table không thể trùng tên**. Chúng chia sẻ cùng namespace.
Minh họa lỗi
Tạo bảng
mysql> CREATE TABLE view_Table_Demo (
Id INT,
Name VARCHAR(20)
);
Thử tạo View cùng tên
mysql> CREATE VIEW view_Table_Demo AS SELECT * FROM view_Table_Demo; ERROR 1050 (42S01): Table 'view_Table_Demo' already exists
Tại sao?
- MySQL lưu metadata của TABLE, VIEW, SEQUENCE (từ 8.0) trong cùng
information_schema.TABLES - Cột
TABLE_TYPEphân biệt: 'BASE TABLE', 'VIEW', 'SYSTEM VIEW' - Tên phải unique trong schema (database)
Cách khắc phục
- Đặt tên khác:
view_Table_Demo_v,v_table_demo,table_demo_view - Quy ước đặt tên: View có tiền tố
v_hoặc hậu tố_view - Dùng schema/database khác nhau nếu cần cùng tên logic
Kiểm tra object tồn tại