2017-06-20 52 views
1

我無法複製MS Access表中的行。 This is a table I have。我的表(PK)是BID,Order_nr,Parameter_ID和TimeStamp。SQL:如何複製行,並更改字段(PK)

這是我現在的查詢,但它不工作;說「INSERT INTO語法錯誤」

INSERT INTO Measurement_test (BID, Order_nr, Parameter_ID, Value, Machine_Serial_nr, TimeStamp, Passed) 
SELECT BID, '12345', Parameter_ID, Value, Machine_Serial_nr, TimeStamp, Passed 
FROM Measurement_test 
WHERE BID = 123; 

我想複製所有的行,而Order_nr設置爲12345。我怎樣才能做到這一點創建新行?

+0

有媒體鏈接了一個解決方案在這裏:https://stackoverflow.com/questions/2783150/mysql-how-to-copy-rows-but-change-a-few-fields它適合我的其他表,但不是這個。請幫助:) –

+0

另外,如果'Order_nr'是PK,它應該是唯一的。如果你的select語句返回多個行(或者你已經有一個Order_nr = 12345的記錄),它會失敗。 – Derenir

+0

正如你可以看到我的PK由4個字段組合組成的,所以當我複製時 - 創建的每個新行都是唯一的,因爲我給它新的Order_nr。並且在運行查詢之前分配的新的Order_nr不存在 –

回答

0

你有幾個Reserved Words在列名:

Value, TimeStamp 

你需要用方括號括他們。

如果Order_nr是整數,則不要在值周圍使用引號。

INSERT INTO Measurement_test (BID, Order_nr, Parameter_ID, [Value], Machine_Serial_nr, [TimeStamp], Passed) 
SELECT BID, 12345, Parameter_ID, [Value], Machine_Serial_nr, [TimeStamp], Passed 
FROM Measurement_test 
WHERE BID = 123; 
+0

謝謝,但它還沒有工作。現在,首先我得到一條消息,我將追加(1)行數,並在單擊是後,我收到另一條錯誤消息,其中說:由於類型蓋度失敗,MS Access將0字段設置爲Null,並且未添加1條記錄到表中由於違反鎖定,0由於違反鎖定和0記錄由於違反驗證規則 –

+0

因此,據我所知,主鍵有問題 –

+0

我發現我的主表錯誤,它的工作完美。謝謝!我放棄了,但因爲我是一個新用戶,沒有人能夠看到它; / –