Lajur yang dijana pada asasnya ialah ciri yang boleh digunakan dalam kenyataan CREATE TABLE atau ALTER TABLE dan merupakan cara untuk menyimpan data tanpa benar-benar menghantar data melalui klausa INSERT atau UPDATE dalam SQL. Ciri ini telah ditambah dalam MySQL 5.7. Lajur yang dijana berfungsi dalam medan jadual. Sintaksnya adalah seperti berikut -
column_name data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]]
Di sini, nyatakan nama lajur dan jenis datanya dahulu.
, nyatakan ungkapan dalam kurungan kerinting selepas kata kunci AS. Ungkapan boleh mengandungi literal, fungsi terbina dalam tanpa parameter, pengendali atau rujukan kepada mana-mana lajur dalam jadual yang sama. Jika fungsi digunakan, ia mestilah skalar dan deterministik.
Akhir sekali, jika anda menyimpan lajur yang dijana, anda boleh menentukan kekangan unik untuknya.
Dalam contoh ini, kami mencipta jadual bernama employee_data yang mengandungi butiran pekerja bersama-sama dengan lajur yang dijana seperti yang ditunjukkan di bawah -
mysql> Create table employee_data(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))); Query OK, 0 rows affected (0.55 sec) mysql> DESCRIBE employee_data; +------------+-------------+------+-----+---------+-------------------+ | 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 | VIRTUAL GENERATED | +------------+-------------+------+-----+---------+-------------------+ 4 rows in set (0.00 sec) mysql> INSERT INTO employee_data(first_name, Last_name) values('Yashpal','Sharma'); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO employee_data(first_name, Last_name) values('Krishan','Kumar'); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO employee_data(first_name, Last_name) values('Rakesh','Arora'); Query OK, 1 row affected (0.08 sec) mysql> Select * from employee_data; +----+------------+-----------+----------------+ | ID | First_name | Last_name | FULL_NAME | +----+------------+-----------+----------------+ | 1 | Yashpal | Sharma | Yashpal Sharma | | 2 | Krishan | Kumar | Krishan Kumar | | 3 | Rakesh | Arora | Rakesh Arora | +----+------------+-----------+----------------+ 3 rows in set (0.00 sec)
Atas ialah kandungan terperinci Apakah MySQL GENERATED COLUMN dan cara menggunakannya semasa membuat jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!