在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中工作。我做错了什么?
答案 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
个字符。因此抛出了错误。