将表复制到具有额外唯一列的B表

时间:2017-07-28 09:56:01

标签: php mysql

在我的数据库中,我有2个表,订单和购物车,我想将购物车表复制到订单表我可以使用此声明

INSERT INTO Orders
SELECT *, CURRENT_TIMESTAMP()
FROM   cart

CURRENT_TIMESTAMP()将替换额外的唯一列但我不想使用时间戳作为唯一,我想有别的东西,因为我害怕2用户将在同一时间订购,然后他们将拥有相同的订单ID

4 个答案:

答案 0 :(得分:0)

使用AUTO INCREMENT将主键ID添加到购物车表。因此,您将拥有一个自动增加的唯一值。

ALTER TABLE cart ADD id INT PRIMARY KEY AUTO_INCREMENT;

答案 1 :(得分:0)

您可以使用当前日期和时间纪元格式来记录唯一​​性。

例如: -

假设1501216777000以毫秒为单位: 格林尼治标准时间:2017年7月28日星期五4:39:37.216 AM 您所在的时区:2017年7月28日星期五10:09:37.216 AM GMT + 05:30

所以1501216777000这个字符串可以是你的唯一。 2个用户现在无法在同一时间下订单,因为此纪元格式以毫秒为单位。

答案 2 :(得分:0)

您可以简单地将某些独特的内容与时间戳连接起来。例如current_timestamp() + '-' + User_ID提供一个每用户唯一的数字。

答案 3 :(得分:-1)

INSERT INTO Orders (COL1,COL2,COL3,COL_TIME)
SELECT COL1,COL2,COL3, CURRENT_TIMESTAMP()
FROM   cart

当您尝试在表中插入值时,始终使用列名而不是*。

相关问题