2017-07-28 60 views
0
在我的數據庫

我有2個表,訂單和車,我想在車表複製到訂單表我能做到這一點使用此語句將表複製到B表有額外的唯一列

INSERT INTO Orders 
 
SELECT *, CURRENT_TIMESTAMP() 
 
FROM cart

的CURRENT_TIMESTAMP()將取代額外的唯一列,但我不希望使用時間戳作爲獨一無二的,我想有別的東西,因爲很害怕2用戶將在同一時間順序,那麼他們將有相同的訂單號

+0

添加設置爲AUTO_INCREMENT的Cart_ID列。 – JeffUK

+0

INSERT INTO訂單(字段) SELECT字段,'CURRENT_TIMESTAMP()' FROM cart –

+0

這將給每個行不同的購物車ID,但我希望他們都有相同的ID像時間戳,所以當用戶再次訂購時,他會這個訂單有不同的訂單ID –

回答

0

您可以使用當前日期和時間紀元格式記錄的唯一性。

例如: -

假設1501216777000是以毫秒爲單位: GMT:星期五7月28日,2017年4:39:37.216 AM 您的時區:星期五,2017年10年7月28日:09:37.216 AM GMT + 05:30

所以1501216777000這個字符串可以是你的唯一。現在2個用戶不能在同一時間下訂單,因爲這個曆元格式以毫秒爲單位。

+0

好主意,但如何在代碼中使用它我證明了你 –

+1

INSERT INTO訂單 SELECT *,(UNIX_TIMESTAMP(NOW())* 1000) FROM cart – Amit

+0

謝謝你這是工作,但有問題,這將只工作一次,第二次它將無法正常工作,我不知道爲什麼 –

0

使用AUTO INCREMENT將主鍵ID添加到您的購物車表中。所以你會有一個獨特的價值自動增加。

ALTER TABLE cart ADD id INT PRIMARY KEY AUTO_INCREMENT; 
+0

這會給每個產品不同的訂單ID,所有的行必須有相同的訂單ID,我發佈的代碼正在工作,並且它做我想要的,但是我想替換函數CURRENT_TIMESTAMP( )與不同的功能,這將給我獨特的價值 –

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

始終把列名而不是*當您嘗試噸表中插入值。

+0

我發佈的代碼正在工作,並且它做我想要的,但我想用不同的函數替換函數CURRENT_TIMESTAMP(),這將給我獨特的價值。並感謝您的建議,我會做到 –

0

你可以簡單地連接一些獨特的東西與時間戳。例如current_timestamp() + '-' + User_ID提供一個數字,每個用戶都是唯一的。

+0

這是一個好主意,也謝謝 –

相關問題