MariaDBでは、DEFAULT() は、テーブル列のデフォルト値を返す組み込み関数です。
列にデフォルト値がなく、NULLABLEの場合 、次にNULL が返されます。列にデフォルト値がなく、ではない場合 NULLABLE 、エラーが返されます。
構文
構文は次のようになります:
DEFAULT(col_name)
col_nameの場所 デフォルト値を返す列の名前です。
場合によっては、括弧や引数なしで使用することもできます。
DEFAULT この構文を使用して、列をデフォルト値に明示的に設定できます。
例
関数がどのように機能するかを示す例を次に示します。
次のようなテーブルを作成するとします。
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
);
ここでは、mealのデフォルト値を設定します 桁。具体的には、DEFAULT 'Salad'を使用しました デフォルトの食事をSaladに設定します 。
これはDEFAULTを使用します CREATE TABLEの句 声明。ここでの目的(列のデフォルト値を設定します)に関連していますが、DEFAULT()と混同しないでください。 この記事の機能。
次に、いくつかの行を挿入しましょう:
INSERT INTO guest_meals (guest_id) VALUES (1);
INSERT INTO guest_meals (guest_id, meal) VALUES (2, 'Fish');
INSERT INTO guest_meals (guest_id, meal) VALUES (3, 'Burrito');
INSERT INTO guest_meals (guest_id, meal, special_request) VALUES (4, 'Pasta', 'Hot');
INSERT INTO guest_meals (guest_id, special_request) VALUES (5, 'Vegan');
これらのエントリの中には、ゲストがどの食事を望んでいるかを明示的に示しているものと、そうでないものがあります。デフォルトの食事(Salad)を使用しないもの 。
それでは、テーブルからそれらの行を選択しましょう。 DEFAULT()を含めます 選択した機能:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals; 結果:
+----------+---------------+---------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+---------+--------------------------+-----------------+ | 1 | Salad | Salad | NULL | NULL | | 2 | Salad | Fish | NULL | NULL | | 3 | Salad | Burrito | NULL | NULL | | 4 | Salad | Pasta | NULL | Hot | | 5 | Salad | Salad | NULL | Vegan | +----------+---------------+---------+--------------------------+-----------------+
DEFAULT(meal) columnはデフォルト値を返し、meal columnは、挿入された実際の値を返します。
同様に、DEFAULT(special_request) columnは、その列のデフォルト値とspecial_requestを返します。 列は、挿入された実際の値を返します。
special_requestについて 列の場合、この列のデフォルト値は実際には設定されていないため、結果はNULLになります。 。列がNULLABLEではなかった場合は注意してください 、エラーが発生します(以下を参照)。しかし、列は NULLABLE 、したがって、デフォルト値のNULL 返されました。
デフォルト値を明示的に挿入する
DEFAULTを使用できます デフォルト値を列に明示的に挿入するための括弧なしのキーワード。
次に例を示します:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT); 次に、その行を選択しましょう:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6; 結果:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
どちらの場合も、それぞれの列にデフォルト値を挿入しました。 mealの場合 列、これはSaladでした 。 special_requestの場合 列、これはNULLでした 。
非NULL可能列
前述のように、NULLABLE以外からデフォルト値を取得しようとしています デフォルト値がない列はエラーになります。
例:
SELECT DEFAULT(guest_id)
FROM guest_meals; 結果:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
テーブルを作成したとき、guest_idのデフォルト値を提供していませんでした 列であり、NOT NULLにも設定します 。このため、デフォルト値を返そうとするとエラーが発生します。
AUTO_INCREMENTを使用した整数列
AUTO_INCREMENTを使用する整数列の場合 、戻り値は0です。 。
例として、AUTO_INCREMENTを使用してテーブルを作成しましょう。 列:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id 列はINTを使用します (整数)データ型で、AUTO_INCREMENTに設定されています 。
次に、いくつかの行を挿入します:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
それでは、guest_idのデフォルト値を返しましょう。 列:
SELECT
DEFAULT(guest_id),
guest_id
FROM guest; 結果:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
DEFAULT(guest_id) 列は、デフォルト値が0であることを示しています すべての行に対して。 guest_id 列には、挿入された実際の値(AUTO_INCREMENTによって生成された値)が表示されます 。