我有一个php函数,使用mysql查询UNIX_TIMESTAMP()来创建一个唯一的事务号,但是我发现如果函数循环在同一时间,它将为案例1生成相同的事务号,使用案例2并不是一个很好的巨大循环方式。
1.在表列表中,我使用事务号对相同的事务日期进行排序。
2.我的事务表使用UUID作为PK,因为数据跨DB。
的愿望答案如下所示,并且是独一无二的.
TransNo = 1397533879.20290PHP版本5.3
Mysql 5.5版
例如,函数循环3次
案例1 :
SELECT UNIX_TIMESTAMP() as TransNo;
Output :
1397533879
1397533879
1397533879案例2 :
SELECT UNIX_TIMESTAMP() as TransNo, SLEEP(1);
Output :
1397533879
1397533880
1397533881发布于 2014-04-15 04:54:15
欲望的答案就像下面一样,独一无二。
TransNo = 1397533879.20290
如果您对current_timestamp或now函数进行了精确的microseconds部件调用,那么它们将返回包含当前微秒时间的timestamp。请注意,允许的最大精度仅适用于6数字。
参见关于http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html的文档
示例1:
select
@ts:=current_timestamp( 3 ) cts_with_milli_seconds
, unix_timestamp( @ts ) uts_with_ts_milli_seconds;结果1:
+-------------------------+---------------------------+
| cts_with_milli_seconds | uts_with_ts_milli_seconds |
+-------------------------+---------------------------+
| 2014-04-15 10:22:17.764 | 1397537537.764000 |
+-------------------------+---------------------------+示例2:
select
@nw:=now( 6 ) now_with_milli_seconds
, unix_timestamp( @nw ) uts_with_nw_milli_seconds;结果2:
+----------------------------+---------------------------+
| now_with_milli_seconds | uts_with_nw_milli_seconds |
+----------------------------+---------------------------+
| 2014-04-15 10:22:17.789248 | 1397537537.789248 |
+----------------------------+---------------------------+边注
如果仍然是微秒部分也匹配,那么您可以附加RAND()到您的值。
RAND()的使用不能保证排序顺序。因此,除非只需要一个唯一的输出,否则不要使用它。
https://stackoverflow.com/questions/23074618
复制相似问题