【问题标题】:How to create random number for a column in mysql with DEFAULT Constraint?如何使用默认约束为 mysql 中的列创建随机数?
【发布时间】:2016-05-24 15:41:18
【问题描述】:

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

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

上述语句返回以下错误:

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

需要解决方案。

【问题讨论】:

    标签: mysql sql syntax-error


    【解决方案1】:

    documentation 很清楚:

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

    你的表达式不是一个常数,所以它不起作用。您需要使用触发器。

    【讨论】:

    • 谢谢你,但是有没有办法在插入时在 sql 中生成随机的 4 位数字?
    • @MegashyamBhandary 。 . .您将需要使用触发器。但是为什么自动增量列不起作用?
    • @MegashyamBhandary:你知道随机数不能保证是唯一的吗?
    • 那么随机数列的作用是什么?
    • 感谢@GordonLinoff 建议触发器。我刚刚读到它。我找到了解决方案。 CREATE TRIGGER trigger_code BEFORE INSERT ON client_number FOR EACH ROW SET @code=floor(rand()*9999)+1111;
    猜你喜欢
    • 2013-08-29
    • 2016-03-14
    • 2010-09-10
    • 2016-08-22
    • 2010-12-19
    • 2017-09-17
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    相关资源
    最近更新 更多