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() );
このクエリはエラーになります。ただし、同様の機能を実現するための回避策があります。
トリガーの使用
デフォルト値の関数の使用をシミュレートする 1 つの方法は、トリガーを使用することです。トリガーは、テーブルへのデータの挿入など、特定のイベントが発生したときに自動的に実行されるデータベース オブジェクトです。 api_key 値の生成に使用できるトリガーは次のとおりです。
CREATE TRIGGER before_insert_app_users BEFORE INSERT ON app_users FOR EACH ROW SET new.api_key = uuid();
このトリガーは、app_users テーブルに挿入する前に実行されます。新しく挿入された行の api_key 列を、uuid() 関数によって生成された UUID 値に設定します。
制限事項と考慮事項
トリガーを使用すると回避策が提供されますが、制限があります:
その他のアプローチ
トリガーに加えて、考慮すべき他のアプローチもあります。
最適なアプローチは、アプリケーションの特定の要件と制約によって異なります。
以上がMySQL カラムはデフォルト値に関数を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。