更新正在插入的行

时间:2018-03-11 01:25:51

标签: mysql phpmyadmin

我有一张名为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:抱歉我的英文不好

1 个答案:

答案 0 :(得分:0)

这看起来不合逻辑,当你在where条件中使用它时,还没有定义serial_ticket。根据文档,

  

不允许在WHERE子句中引用列别名,   因为列值可能尚未确定   执行WHERE子句

https://dev.mysql.com/doc/refman/5.7/en/problems-with-alias.html

根据您的一个唯一字段生成唯一前缀,然后附加一个随机数(带前导零)。您不必使用触发器,因为您可以在插入行时执行此操作,所以它会更快。