在 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() );
此查詢將導致錯誤。但是,有一些解決方法可以實現類似的功能。
使用觸發器
模擬使用預設值函數的一種方法是透過觸發器。觸發器是在特定事件發生時自動執行的資料庫對象,例如將資料插入表中。這是一個可用來產生 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中文網其他相關文章!