Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL View และ Table ไม่สามารถมีชื่อเดียวกันได้

ไม่สามารถ สร้าง View และ Table ชื่อเดียวกันในฐานข้อมูลเดียวกันได้

สร้างตารางตัวอย่าง

mysql> CREATE TABLE view_Table_Demo (
    -> Id INT,
    -> Name VARCHAR(20)
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO view_Table_Demo VALUES (100, 'Larry'), (101, 'Mike'), (102, 'Sam');

แสดงข้อมูล

mysql> SELECT * FROM view_Table_Demo;

ผลลัพธ์:

+------+-------+
| Id   | Name  |
+------+-------+
| 100  | Larry |
| 101  | Mike  |
| 102  | Sam   |
+------+-------+

พยายามสร้าง View ชื่อเดียวกัน (Error)

mysql> CREATE VIEW view_Table_Demo AS SELECT * FROM view_Table_Demo;
ERROR 1050 (42S01): Table 'view_Table_Demo' already exists

เหตุผล

  • MySQL เก็บ View และ Table ใน namespace เดียวกัน (same namespace)
  • ชื่อต้องไม่ซ้ำกันระหว่าง: TABLE, VIEW, TEMPORARY TABLE
  • Error 1050: Table already exists (รวม View ด้วย)

วิธีแก้: ใช้ชื่อต่างกัน

-- เพิ่ม prefix/suffix
CREATE VIEW v_view_Table_Demo AS SELECT * FROM view_Table_Demo;
CREATE VIEW view_Table_Demo_view AS SELECT * FROM view_Table_Demo;

แนวทางตั้งชื่อแนะนำ

ประเภทPrefix/Suffixตัวอย่าง
Table(ไม่มี) / _tblusers, orders_tbl
Viewv_ / _viewv_user_summary, order_details_view
Temporary Tabletmp_ / _temptmp_session_data
Stored Proceduresp_ / proc_sp_get_user
Functionfn_ / func_fn_calculate_tax
Triggertrg_ / trigger_trg_audit_log

ตรวจสอบ View ที่มีอยู่

SHOW FULL TABLES WHERE Table_type = 'VIEW';
-- หรือ
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'your_db';

ลบ View ก่อนสร้างใหม่ (ถ้าต้องการชื่อเดียว)

DROP VIEW IF EXISTS view_Table_Demo;
CREATE VIEW view_Table_Demo AS SELECT * FROM some_table;

แต่ต้องลบ Table เดิมก่อน (เพราะชื่อซ้ำ)