我想做這樣的事情:create table app_users( app_user_id smallint(6) not null auto_increment primary key, api_key char(36) not null default uuid());但是,這會導致錯誤,是否可以在mysql中為默認值調(diào)用函數(shù)?謝謝。
3 回答

喵喔喔
TA貢獻1735條經(jīng)驗 獲得超5個贊
如前所述,您不能。
如果要模擬此行為,可以按以下方式使用觸發(fā)器:
CREATE TRIGGER before_insert_app_users
BEFORE INSERT ON app_users
FOR EACH ROW
IF new.uuid IS NULL
THEN
SET new.uuid = uuid();
END IF;
您仍然必須更新以前存在的行,如下所示:
UPDATE app_users SET uuid = (SELECT uuid());

阿晨1998
TA貢獻2037條經(jīng)驗 獲得超6個贊
從mysql v8.0.13開始,可以使用表達式作為字段的默認值:
DEFAULT子句中指定的默認值可以是文字常量或表達式。除一個例外,將表達式默認值括在括號內(nèi),以將其與文字常量默認值區(qū)分開。
CREATE TABLE t1 (
uuid_field VARCHAR(32) DEFAULT (uuid()),
binary_uuid BINARY(16) DEFAULT (UUID_TO_BIN(UUID()))
);
添加回答
舉報
0/150
提交
取消