Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL: View và Table có thể trùng tên không?

Đá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_TYPE phâ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