2012-01-28 2 views
0

VB.NET 및 Visual Studio 2005에서 개발 한 내 VB.NET 응용 프로그램을 배포해야합니다. SQL Server 2000에 대해 응용 프로그램을 작성하는 동안 SQL Server 2008을 사용하고 있습니다. SQL Server 2008에서 실행할 때 삽입 문이 실패합니다.

나는 2008 SQL 서버에 대해 다음과 같은 오류가 발생 :

'Outgoing_Invoice'테이블의 ID 열에 대한 명시 적 값에만 열 목록을 사용할 때 지정된 아이덴티티 삽입

이 ON 될 수있다
Dim cmd1 As New SqlCommand("Insert into Stock values(@invoice_no, @gate_pass, @exp_no, @clm_no, @category, @item_name, @weight, @units_case, 0, 0, @crtns_removed, @pieces_removed, 0, 0, @date_added, @date_removed, @inc_total_price, @out_total_price, @discount, @amount, 'Sold', @expiry_date) Insert into Outgoing_Invoice values(@invoice_no, @exp_no, @party_name, @party_code, @city, @contact, @category, @item_name, @weight, @units_case, @crtns_issued, @pieces_issued, @crtns_removed, @pieces_removed, 0, 0, @scheme, @unit_price, @out_total_price, @discount, @amount, @date_removed, @expiry_date, @order_booker, @salesman)", con) 

오류 메시지가 cmd1.executenonquery에서 쇼를하다 :3210 다음은 두 테이블에 데이터를 삽입하기위한 내 쿼리입니다. 이들 테이블 StockOutgoing_Invoice은 모두 @invoice 앞에 serial이라고 표시된 ID 열을 가지고 있습니다.

SQL Server 2008에서 삽입을 시도한 경우에만 문제가 발생했습니다. SQL Server 2000에 대해 실행하면 예상대로 작동합니다.

이 문제점의 가능한 원인은 무엇이고 어떻게 해결 될 수 있습니까?

답변

4

귀하의 INSERT 쿼리는 DB에 정의 된대로, 그렇지 않으면이 열 순서로 시도됩니다 VALUES 절 전에 열 이름을 지정해야합니다 (변경 될 수 있습니다 -이 고정 하지입니다).

오류가 발생했기 때문에 INSERT이 ID 열에 삽입하려고 시도합니다. 일반적으로

-모든 열을 삽입하지 않을 때, 당신은 열 이름을 지정해야합니다. 항상은 모범 사례로 열 이름을 지정합니다. Outgoing_Invoice

INSERT INTO aTable 
(col1, col2) 
VALUES 
(@val1, @val2) 
+2

@ user944591 - 주문에 의존 할 수 없습니다 (대답 업데이트). _all_ 열에 삽입하지 않을 경우 ** 반드시 열 이름을 지정해야합니다. – Oded

2

삽입 많은 매개 변수를 가지고 : -

그래서 열 목록을 지정합니다.

괜찮습니다. 값 1과 2는 C1과 C2로 이동하고 ID가 자동으로 지정됩니다.

declare @T table 
(
    ID int identity, 
    C1 int, 
    C2 int 
) 

insert into @T values (1, 2) 

는 그것은 아마도 하나 개의 추가 필드가 SQL 서버 2000에서 테이블 구조를 확인
insert into @T values (1, 2, 3) 

이 정확한 오류를 줄 것이다. 그러면 왜 그곳에서 일하고 있는지 설명 할 수 있습니다.

0

table의 IDENTITY 열 값을 수정/삽입하려면 명시 적으로 필드 목록을 지정해야합니다.

e. 귀하의 질의는 다음과 같아야합니다 :

Insert into Stock 
(
    here, 
    comes, 
    your, 
    real, 
    column, 
    names 
) 
values 
(
    @invoice_no, 
    @gate_pass, 
    @exp_no, 
    @clm_no, 
    @category, 
    @item_name, 
    @weight, 
    @units_case, 
    0, 
    0, 
    @crtns_removed, 
    @pieces_removed, 
    0, 
    0, 
    @date_added, 
    @date_removed, 
    @inc_total_price, 
    @out_total_price, 
    @discount, 
    @amount, 
    'Sold', 
    @expiry_date 
) 

Insert into Outgoing_Invoice 
(
    here, 
    comes, 
    your, 
    real, 
    column, 
    names, 
    too 
) 
values 
(
    @invoice_no, 
    @exp_no, 
    @party_name, 
    @party_code, 
    @city, 
    @contact, 
    @category, 
    @item_name, 
    @weight, 
    @units_case, 
    @crtns_issued, 
    @pieces_issued, 
    @crtns_removed, 
    @pieces_removed, 
    0, 
    0, 
    @scheme, 
    @unit_price, 
    @out_total_price, 
    @discount, 
    @amount, 
    @date_removed, 
    @expiry_date, 
    @order_booker, 
    @salesman 
) 
관련 문제