การสร้าง View ที่ไม่มีข้อมูล (Empty View) ใน MySQL
ใช้ CREATE OR REPLACE VIEW ร่วมกับ SELECT ... FROM DUAL WHERE FALSE เพื่อสร้าง View ที่มีโครงสร้าง (Columns) แต่ไม่มีแถวข้อมูล
Syntax
CREATE OR REPLACE VIEW view_name AS SELECT value1 AS col1, value2 AS col2, ... FROM DUAL WHERE FALSE;
ตัวอย่าง: สร้าง Empty View สำหรับ Client
mysql> CREATE OR REPLACE VIEW empty_view AS
SELECT 'John Smith' AS ClientName,
'US' AS ClientCountryName,
FALSE AS isMarried
FROM DUAL
WHERE FALSE;
Query OK, 0 rows affected (0.20 sec)
ตรวจสอบโครงสร้าง View (DESC):
mysql> DESC empty_view;
+-------------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------+-------------+------+-----+---------+-------+ | ClientName | varchar(10) | NO | | | | | ClientCountryName | varchar(2) | NO | | | | | isMarried | int(1) | NO | | 0 | | +-------------------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
ตรวจสอบข้อมูล (Empty Set):
mysql> SELECT * FROM empty_view;
Empty set (0.00 sec)
คำอธิบาย
DUAL- Dummy Table ใน MySQL ใช้สำหรับ SELECT ที่ไม่ต้อง FROM Table จริงWHERE FALSE- เงื่อนไขที่เป็นเท็จเสมอ ทำให้ไม่มีแถวใดถูก SelectCREATE OR REPLACE VIEW- สร้างใหม่หรือแทนที่ View เดิม (ไม่ Error หากมีอยู่แล้ว)- Columns และ Types ถูกสร้างจากค่า Literal ใน SELECT
กรณีใช้งานจริง
- Template View สำหรับ Application ที่คาดหวัง Schema เฉพาะ
- Placeholder ระหว่าง Development / Migration
- Union กับ View อื่นเพื่อให้ Schema ตรงกัน
- Testing Framework ที่ต้องการ Empty Result Set
คำสั่งเกี่ยวข้อง
- ดู View:
SHOW CREATE VIEW view_name; - ลบ View:
DROP VIEW [IF EXISTS] view_name; - Updatable View: ต้องไม่มี Aggregate, DISTINCT, GROUP BY, UNION, Subquery ใน FROM