我想做这样的事情:create table app_users( app_user_id smallint(6) not null auto_increment primary key, api_key char(36) not null default uuid());但是,这会导致错误,是否可以在mysql中为默认值调用函数?谢谢。
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
如前所述,您不能。
如果要模拟此行为,可以按以下方式使用触发器:
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());
料青山看我应如是
TA贡献1772条经验 获得超8个赞
从mysql v8.0.13开始,可以使用表达式作为字段的默认值:
DEFAULT子句中指定的默认值可以是文字常量或表达式。除一个例外,将表达式默认值括在括号内,以将其与文字常量默认值区分开。
CREATE TABLE t1 (
uuid_field VARCHAR(32) DEFAULT (uuid()),
binary_uuid BINARY(16) DEFAULT (UUID_TO_BIN(UUID()))
);
添加回答
举报
0/150
提交
取消