MySQL có hai loại cột tạo (generated columns) như sau:
CỘT TẠO ẢO (VIRTUAL GENERATED COLUMN)
Như tên gọi, loại cột tạo này không chiếm dung lượng đĩa. Nó có thể được tạo với hoặc không sử dụng từ khóa VIRTUAL. Để hiểu rõ, chúng ta minh họa ví dụ sau:
Ví dụ
mysql> Create table triangle(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideA + SideB * SideB))); Query OK, 0 rows affected (0.44 sec) mysql> Describe Triangle; +-------+--------+------+-----+---------+-------------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+-------------------+ | SideA | double | YES | | NULL | | | SideB | double | YES | | NULL | | | SideC | double | YES | | NULL | VIRTUAL GENERATED | +-------+--------+------+-----+---------+-------------------+ 3 rows in set (0.00 sec)
Mô tả trên cho thấy cột SideC là một cột tạo ảo (virtually generated column).
CỘT TẠO LƯU TRỮ (STORED GENERATED COLUMN)
Như tên gọi, loại cột tạo này sẽ chiếm dung lượng đĩa. Nó được tạo bằng cách sử dụng từ khóa STORED. Để hiểu rõ, chúng ta minh họa ví dụ sau:
Ví dụ
mysql> Create table triangle_stored(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideA + SideB * SideB)) STORED); Query OK, 0 rows affected (0.47 sec) mysql> Describe triangle_stored; +-------+--------+------+-----+---------+------------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+------------------+ | SideA | double | YES | | NULL | | | SideB | double | YES | | NULL | | | SideC | double | YES | | NULL | STORED GENERATED | +-------+--------+------+-----+---------+------------------+ 3 rows in set (0.00 sec)
Mô tả trên cho thấy cột SideC là một cột tạo lưu trữ (stored generated column).