基本的に生成された列は、CREATE TABLE または ALTER TABLE ステートメントで使用できる機能であり、SQL の INSERT または UPDATE を経由せずにデータを保存する方法です。句は実際にデータを送信します。この機能は MySQL 5.7 で追加されました。生成された列はテーブルフィールド内で機能します。構文は次のとおりです。 -
column_name data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]]
ここでは、まず列名とそのデータ型を指定します。
の後に、AS キーワードに続く中括弧内に式を指定します。式には、リテラル、パラメータのない組み込み関数、演算子、または同じテーブル内の列への参照を含めることができます。関数を使用する場合は、スカラーかつ決定論的である必要があります。
最後に、生成された列を保存する場合、その列に対して一意制約を定義できます。
この例では、以下に示すように、従業員の詳細と生成された列を含むemployee_dataという名前のテーブルを作成します。 -
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)
以上がMySQL GENERATED COLUMN とは何ですか?また、テーブルを作成するときにそれを使用する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。