我試圖從一個表中插入數據到一個具有兩列鍵的表中。源表不共享目標的密鑰。目標中的兩個鍵列都是varchars。在SELECT語句中的日期總是相同
我有一個插入語句:
INSERT INTO Table1 (Invoice, DetailLine, SomeData1, SomeData2)
SELECT ('1'+RIGHT('00000000000000' + CONVERT(varchar, DatePart(ns,SYSDATETIME()), 14), 0, 'STARTING_VALUE_1407', [ActualValue]
FROM Table2;
當我執行我的DATETIME2對象上面,我毫秒都是一樣的,彷彿這只是一次評估該值。這阻止了我將其用作臨時唯一密鑰。是否可以在SELECT語句中使用SYSDATETIME()或任何其他日期函數,併爲每一行重新評估值?如果不是,那麼在選擇通常不會共享目標表項的數據時,是否有辦法在執行INSERT INTO SELECT時生成唯一值?
看一看列類型'TI MESTAMP':http://technet.microsoft.com/en-us/library/aa260631(v=sql.80).aspx – 2014-09-23 14:43:04
如果您需要爲每行生成唯一值 - 您可以通過newid()使用GUID, ' – 2014-09-23 14:48:13
您可以首先將其插入到具有發票作爲IDENTITY()列的臨時表中,然後將臨時表插入到Table1中。 – 2014-09-23 14:48:48