mysql表默认公式

时间:2014-04-05 16:16:58

标签: mysql phpmyadmin

在mysql(Ubuntu 13.10,MySql 5.5)中,我试图创建一个表,该表将使用以下代码自动创建一个随机的字母数字ID:

create table YGraph (
    YGraphEdgeId CHAR(8) NOT NULL PRIMARY KEY DEFAULT SUBSTRING(MD5(RAND()) FROM 1 FOR 8),
    YGraphStartVertex CHAR(6) NOT NULL,
    YGraphEndVertex CHAR(6) NOT NULL
);

但phpmyadmin抱怨:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUBSTRING(MD5(RAND()) FROM 1 FOR 8), YGraphStartVertex CHAR(6) NOT NULL, ' at line 2

。 。 。并在公式周围加上引号只给出通用的

#1067 - Invalid default value for 'YGraphEdgeId'

我只想创建一个新记录来运行默认公式,并在YGraphEdgeId字段中添加一个8位随机字母。我好像记得这个公式在INSERT中工作。我做错了什么?

2 个答案:

答案 0 :(得分:2)

目前,您无法使用函数为列提供默认值,请参阅https://dev.mysql.com/doc/refman/5.5/en/data-type-defaults.html

答案 1 :(得分:0)

根据MySQL Documentation on Data Type Default Values

  

...默认值必须是常量;它不能是一种功能或表达......

因此,您无法在那里使用函数或表达式。

其次,您可以指定默认字符串值,但它应该遵守所使用的列数据类型的长度。用于定义默认值的字符串多于8个字符。因此抛出了错误。