我可以在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丰富。
我相信你不能 :
默认值必须是常数; 它不能是一个function或expression