2016-01-20 120 views
1

在Access中有一個簡單的表格佈局:將數據插入到表關係

enter image description here

而且我希望將數據添加到t_Bild。 所以我創建了查詢:

INSERT INTO t_Bild (B_ID, M_ID, Dateiname, Datum) 
VALUES (11, 8, "someName.png", DATE()); 

它的工作原理。但我需要動態獲取B_ID的最大值,以便查詢自動插入一個新的私鑰。 所以我已經修改了查詢:

INSERT INTO t_Bild (B_ID, M_ID, Dateiname, Datum) 
VALUES ((SELECT 1+ MAX(B_ID) FROM t_Bild), 8, "someName.png", DATE()); 

但問題是,每次我運行沒有數據插入查詢。我也沒有收到任何錯誤消息。 我有查詢查詢:

SELECT 1+ MAX(B_ID) FROM t_Bild; 

它工作正常。

如何使用有效的私鑰實現向t_Bild添加數據?

注意:我無法將私鑰設置爲自動編號,因爲我在建模數據庫時忘記設置私鑰。現在Access不允許我將私鑰設置爲自動編號。

回答

2

您可以使用INSERT INTO ...選擇的變體:

INSERT INTO t_Bild (B_ID, M_ID, Dateiname, Datum) 
    SELECT 1+ MAX(B_ID), 8, "someName.png", DATE() 
    FROM t_Bild GROUP BY 2,3,4 
+0

工作正常!但爲什麼GROUP BY 2,3,4? – jublikon

+1

如果沒有「分組依據」,則不能計算「最大值」等合計值,2,3,4是另一種編寫方式:按M_ID,Dateiname,Datum分組。 你可以參考這個問題更多:http://stackoverflow.com/questions/7392730/what-does-sql-clause-group-by-1-mean –