6

INSERTPK フィールドとして自動番号があるステートメントの実行に問題があります。long主キーとして自動インクリメントがあり、次に type の 4 つのフィールドがありdoubleます。それでも Access (ADO を使用) は、insert ステートメントに 5 つの値が必要なようです。

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!!

オートナンバリングを使用して実際にオートナンバリングするにはどうすればよいですか?

4

4 に答える 4

16

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

だから、あなたがしなければならないことはこれです:

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

また、[主キー] 列 (自動採番フィールド) を必ず省略してください。次に、Access はそれを次の値に自動的に設定します。

次に、新しく挿入されたレコードの主キー値を取得するには、

SELECT @@identity FROM MyTable

声明。

于 2009-04-21T07:47:55.093 に答える
1

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

于 2009-04-21T07:48:56.227 に答える
0

挿入クエリから自動番号をそのままにしておきます。それはそれ自身で移入されます。

ProjectID の前に ID フィールドがあります

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;
于 2014-02-14T14:13:19.420 に答える
0

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

于 2009-04-23T05:07:22.747 に答える