ホームページ >データベース >mysql チュートリアル >MySQL は関数を使用してデフォルトのカラム値を設定できますか?

MySQL は関数を使用してデフォルトのカラム値を設定できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-17 05:21:26821ブラウズ

Can MySQL Use Functions to Set Default Column Values?

MySQL の関数を使用したデフォルト値の割り当て

MySQL では、テーブル列のデフォルト値は通常、定数や定数などの静的な値として設定されます。表現。ただし、一部のユーザーは、関数を使用してデフォルト値を割り当てたい場合があります。この質問では、そのような機能が MySQL でサポートされているかどうかを調べます。

質問:

MySQL は関数を使用してデフォルトのカラム値を割り当てることができますか?たとえば、次のステートメントは正常に実行できますか?

create table app_users
(
    app_user_id smallint(6) not null auto_increment primary key,
    api_key     char(36) not null default uuid()
);

答え:

いいえ、MySQL では関数を使用してデフォルトのカラム値を割り当てることはできません。そうしようとすると、エラーが発生します。

解決策:

MySQL 自体は関数ベースのデフォルト値をサポートしていませんが、トリガーを使用して回避策を実現で​​きます。これは、app_users テーブルに新しい行を挿入する前に、デフォルトの UUID 値を api_key 列に割り当てるトリガーの例です。

CREATE TRIGGER before_insert_app_users
  BEFORE INSERT ON app_users 
  FOR EACH ROW
  SET new.api_key = uuid();

このトリガーは、新しい行ごとに新しい UUID を自動的に生成し、api_key 列に割り当てます。 app_users テーブルに行が挿入されました。

以上がMySQL は関数を使用してデフォルトのカラム値を設定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。