猿问

我可以在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中为默认值调用函数?


谢谢。


DIEA
浏览 3415回答 3
3回答

www说

如前所述,您不能。如果要模拟此行为,可以按以下方式使用触发器:CREATE TRIGGER before_insert_app_usersBEFORE INSERT ON app_usersFOR EACH ROW  IF new.uuid IS NULL  THEN    SET new.uuid = uuid();  END IF;您仍然必须更新以前存在的行,如下所示:UPDATE app_users SET uuid = (SELECT uuid());

呼啦一阵风

从mysql v8.0.13开始,可以使用表达式作为字段的默认值:DEFAULT子句中指定的默认值可以是文字常量或表达式。除一个例外,将表达式默认值括在括号内,以将其与文字常量默认值区分开。CREATE TABLE t1 (  uuid_field     VARCHAR(32) DEFAULT (uuid()),  binary_uuid    BINARY(16)  DEFAULT (UUID_TO_BIN(UUID())));
随时随地看视频慕课网APP

相关分类

MySQL
我要回答