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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

我想做这样的事:

create table app_users
(
    app_user_id smallint(6) not null auto_increment primary key,
    api_key     char(36) not null default uuid()
);

但是,这会导致错误,是否有方法在MySQL中调用默认值的函数?

谢谢

提问于
用户回答回答于

不你不能。

但是,可以很容易地创建一个触发器来执行此操作,例如:

CREATE TRIGGER before_insert_app_users
  BEFORE INSERT ON app_users 
  FOR EACH ROW
  SET new.api_key = uuid();
用户回答回答于

就像前面说过的,你不能。

如果想模拟这种行为,可以这样使用触发器:

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

扫码关注云+社区