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

MySQL Stored Generated Column ทำงานกับ Built-in Functions

Stored Generated Column สามารถใช้ Built-in Functions ของ MySQL ในนิพจน์ได้ เช่นเดียวกับ Virtual Column แต่ค่าจะถูกคำนวณและเก็บไว้ตอน INSERT/UPDATE

ตัวอย่าง: สร้างตาราง employee_data_stored พร้อม Stored Generated Column FULL_NAME

mysql> CREATE TABLE employee_data_stored(
    ID INT AUTO_INCREMENT PRIMARY KEY,
    First_name VARCHAR(50) NOT NULL,
    Last_name VARCHAR(50) NOT NULL,
    FULL_NAME VARCHAR(90) GENERATED ALWAYS AS (CONCAT(First_name, ' ', Last_name)) STORED
  );
Query OK, 0 rows affected (0.52 sec)

mysql> DESCRIBE employee_data_stored;
+------------+-------------+------+-----+---------+------------------+
| Field      | Type        | Null | Key | Default | Extra            |
+------------+-------------+------+-----+---------+------------------+
| ID         | int(11)     | NO   | PRI | NULL    | auto_increment   |
| First_name | varchar(50) | NO   |     | NULL    |                  |
| Last_name  | varchar(50) | NO   |     | NULL    |                  |
| FULL_NAME  | varchar(90) | YES  |     | NULL    | STORED GENERATED |
+------------+-------------+------+-----+---------+------------------+

ทดสอบเพิ่มข้อมูล

mysql> INSERT INTO employee_data_stored(first_name, last_name) VALUES('Gaurav', 'Kumar');
Query OK, 1 row affected (0.04 sec)
mysql> INSERT INTO employee_data_stored(first_name, last_name) VALUES('Raman', 'Singh');
Query OK, 1 row affected (0.09 sec)

mysql> SELECT * FROM employee_data_stored;
+----+------------+-----------+--------------+
| ID | First_name | Last_name | FULL_NAME    |
+----+------------+-----------+--------------+
| 1  | Gaurav     | Kumar     | Gaurav Kumar |
| 2  | Raman      | Singh     | Raman Singh  |
+----+------------+-----------+--------------+

สรุป: Stored Generated Column รองรับ Built-in Functions เดียวกับ Virtual (CONCAT, UPPER, DATE_FORMAT, ฯลฯ) ต่างตรงที่เก็บค่าจริงลงดิสก์ คำนวณตอน INSERT/UPDATE