我有一张名为Tickets的表。我想为要插入的行的serial_ticket字段自动生成ramdom编号。我怎样才能做到这一点?这是我的身体触发码:
BEGIN
set new.Serial_Ticket := (SELECT FLOOR(RAND() * 99999) AS serial_ticket
FROM tickets
WHERE "serial_ticket" NOT IN (SELECT serial_ticket FROM tickets));
END
我没有错误,但它没有工作我只是得到" null"当我插入一个新行。我在Wampserver(localhost)和C#app上使用phpmyadmin。
目标是请求服务器在数据库上放置新票证并生成票证序列,然后将每个待售物品插入名为" item"但我需要在将这些项目与故障单链接后生成故障单序列,并避免重复。
PD:抱歉我的英文不好答案 0 :(得分:0)
这看起来不合逻辑,当你在where条件中使用它时,还没有定义serial_ticket。根据文档,
不允许在WHERE子句中引用列别名, 因为列值可能尚未确定 执行WHERE子句
https://dev.mysql.com/doc/refman/5.7/en/problems-with-alias.html
根据您的一个唯一字段生成唯一前缀,然后附加一个随机数(带前导零)。您不必使用触发器,因为您可以在插入行时执行此操作,所以它会更快。