如何使用默认约束为 mysql 中的列创建随机数?

Meg*_*ary 2 mysql sql syntax-error

DEFAULT 约束在接受字符串或当前日期值方面没有问题。我需要的是一个约束,每次创建实体时都会创建一个随机的 4 位数字。我尝试了以下代码,但它返回一个语法错误。

ALTER TABLE client_number ADD(code INT(4) DEFAULT FLOOR(RAND()*9999)+1111);

上述语句返回以下错误:

#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的“floor(rand()*9999)+1111)”附近使用的正确语法

需要解决方案。

Gor*_*off 7

评论太长了。

文档是很清楚的:

数据类型规范中的 DEFAULT value 子句指示列的默认值。除了一个例外,默认值必须是一个常量;它不能是函数或表达式。

您拥有的表达式不是常量,因此它不起作用。您需要改用触发器。

  • 感谢@GordonLinoff 建议触发器。我刚才读到了它。我找到了解决方案。在每个行集的 client_number 上插入之前创建触发器 trigger_code @code=floor(rand()*9999)+1111; (2认同)