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

谢谢。

不,你不能。

但是,您可以轻松创build触发器来执行此操作,例如:

 CREATE TRIGGER before_insert_app_users
  在插入app_users之前 
  为每一行
   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()); 

不幸的是,MySQL 5需要默认的常量。 这个问题在下面的链接中有更详细的讨论。 但唯一的答案是允许null并添加一个表触发器。

MySQL最近才接受UUID作为其数据库包的一部分,而且它不像我们想要的那样function丰富。

http://www.phpbuilder.com/board/showthread.php?t=10349169

我相信你不能 :

默认值必须是常数; 它不能是一个function或expression