2009-04-21 38 views
5

Tôi đang gặp sự cố khi chạy câu lệnh INSERT trong đó có một số tự động làm trường PK. Tôi có một số tự động tăng thêm long làm Khóa chính và sau đó là 4 trường thuộc loại double; và truy cập (sử dụng ADO) dường như muốn năm giá trị cho câu lệnh chèn.Sử dụng Autonumbering trong Access - các câu lệnh INSERT

INSERT INTO [MY_TABLE] VALUES (1.0, 2.0, 3.0, 4.0); 
>> Error: Number of query values and destinations fields are not the same. 

INSERT INTO [MY_TABLE] VALUE (1, 1.0, 2.0, 3.0, 4.0); 
>> Success!! 

Làm cách nào để sử dụng Tự động sửa để thực sự tự động?

Trả lời

13

Nếu bạn không muốn cung cấp giá trị cho tất cả các cột tồn tại trong bảng của mình, bạn phải chỉ định các cột mà bạn muốn chèn. (Mà là hợp lý, nếu không làm thế nào nên truy cập, hoặc bất kỳ DB khác, biết cho cột bạn đang cung cấp một giá trị)?

Vì vậy, những gì bạn phải làm là thế này:

INSERT INTO MyTable (Column2, Column3, Column4) VALUES (1, 2, 3) 

Ngoài ra, hãy chắc chắn rằng bạn bỏ qua các cột khoá chính (đó là lĩnh vực autonumber). Sau đó, Access sẽ tự đặt giá trị đó thành giá trị tiếp theo.

Sau đó bạn có thể lấy giá trị khóa chính của hồ sơ mới được chèn bằng cách thực hiện một tuyên bố

SELECT @@identity FROM MyTable 

.

+0

Cảm ơn bạn rất nhiều! Bạn không chỉ trả lời câu hỏi của tôi, nhưng bạn đã trả lời câu hỏi tiếp theo tôi đã được trong quá trình viết: làm thế nào để trích xuất các autonumber sau khi chèn. Chúc mừng! – Smashery

1

Đề cập đến tên cột trong truy vấn của bạn khi bạn chỉ cung cấp 4 giá trị trong khi bạn có 5 cột trong bảng đó. Cơ sở dữ liệu cần biết giá trị bạn cung cấp là cột nào.

0

Mặc dù hiểu biết của tôi là nếu bạn đang sử dụng SQL Server hoặc tương tự và có trình kích hoạt thêm bản ghi bổ sung, @@ IDENTITY có thể là các bản ghi bổ sung khác.

0

Chỉ để lại số tự động trong truy vấn chèn. Nó sẽ cư trú trên đó là của riêng nó.

Có một trường ID trước khi ProjectID

INSERT INTO ProjectRiskAssessment 
(ProjectID 
, RiskClass 
, RiskElement 
, RiskAttribute 
, RiskQuestion 
, RiskScale 
, RiskStatus 
, RiskSeverity 
, RiskProbability 
, RiskResponse) 
SELECT 
1 AS Expr2 
, PullRiskAssessmentQuestions.RiskClass 
, PullRiskAssessmentQuestions.RiskElement 
, PullRiskAssessmentQuestions.RiskAttribute 
, PullRiskAssessmentQuestions.RiskQuestion 
, '0' AS Expr3 
, 'Open' AS Expr4 
, '1' AS Expr5 
, '1' AS Expr6 
, ' ' AS Expr7 
FROM PullRiskAssessmentQuestions; 
+0

Câu trả lời khá dễ hiểu, có thể thử cụ thể hơn với những gì người khác hỏi và không sử dụng mã bạn có. – Migol

Các vấn đề liên quan