为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在MySql中使用函数作为默认值吗?

我可以在MySql中使用函数作为默认值吗?

白猪掌柜的 2019-10-18 14:49:41
我想做这样的事情: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());


查看完整回答
反对 回复 2019-10-18
?
料青山看我应如是

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()))

);


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 432 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信