2009-04-21 23 views
5

PKフィールドとしてオートナンバーがあるINSERTステートメントの実行に問題があります。私は、プライマリキーとしてlongを自動インクリメントした後、doubleの4つのフィールドを持っています。 Access(ADOを使用)ではinsert文に5つの値が必要なようです。Accessでの自動番号付けの使用 - 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!! 

自動番号付けを使用して実際に自動番号を設定するにはどうすればよいですか?

答えて

13

テーブルに存在するすべての列に値を指定しない場合は、挿入する列を指定する必要があります。 (どちらが論理的なのですか?そうでなければ、どのようにして他のDBにアクセスして、どの列に値を提供するのか知っていますか?

だから、何をしなければならないことは、この次のとおりです。また

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

、あなたは(オートナンバー型フィールドである)主キー列を省略していることを確認してください。 次に、Accessはそれを次の値に設定します。

その後、

SELECT @@identity FROM MyTable 

ステートメントを実行することにより、新たに挿入されたレコードの主キーの値を取得することができます。

+0

はそんなにありがとう前にIDフィールドがあります!あなたは私の質問に答えただけでなく、私が書いている過程の中で次の質問に答えました。挿入後に自律番号を抽出する方法です。乾杯! – Smashery

1

クエリの列名は、4つの値しか提供していませんが、そのテーブルには5つの列があります。データベースは、あなたが提供する価値がどの列のものかを知る必要があります。

0

SQL Serverなどを使用しており、追加のレコードを追加するトリガーがある場合、@@ IDENTITYはその他の追加レコードのものである可能性があります。

0

挿入クエリの自動番号をそのままにしてください。それは自分の上にそれを設定します。

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

わかりにくい答えです。多分、他の人が尋ねたことにもっと具体的にしてみてください。 – Migol

関連する問題