Questione : Inserire il funzionamento all'interno di un innesco: Errore che converte il tipo di dati varchar in numerico

Ciao,

I che ha difficoltà inserire in una tabella using un innesco.  La cosa bizzarra è che era la settimana scorsa funzionare ritardato.  L'unica cosa che ho aggiunto era un indice alla tabella su InvoiceNumber e LineItemNo_Int.

If rendo invalido l'innesco, i dati è inserito.  Quando permetto all'innesco, ottengo un errore:

Msg 8114, Livello 16, condizione 5, trig_InvoiceLinesInsertCheck, linea 27
Error di procedura che converte il tipo di dati varchar in numeric.

Table Def: TABELLA del
CREATE [dbo]. [InvoiceLines] (IDENTITÀ del
[InvoiceLinesID] [int] (1.1) NULLO,
[InvoiceNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[CustomerNo] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[LineItemNo] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[LineItemNo_Int] [int] POSIZIONE DI SEGNALE MINIMO,
[PartNo] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[CustomerPartNo] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[quantità] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[UnitOfMeasure] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[UnitPrice] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[sconto] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[VAT_Tax] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[PONumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[PODate] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[OrderNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[PackingSlip] [varchar] (100) FASCICOLA LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[PlantNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[DepartmentNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[AccountNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[CompanyWarehouse] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[SalesOrderCarrier] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[LineItemPONumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[LineItemReleaseNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[MKPositionNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[TrackingNumber] [varchar] (100) FASCICOLARE LA POSIZIONE DI SEGNALE MINIMO di SQL_Latin1_General_CP1_CI_AS, il
[InvoiceFormat] [varchar] (100) FASCICOLARE SQL_Latin1_General_CP1_CI_AS NULL
) su


Trigger Def: INNESCO del

alter [dbo]. [trig_InvoiceLinesInsertCheck] SOPRA [dbo]. Il
[di InvoiceLines] ANZICHÉ il on
del nocount del
AS
BEGIN
dell'INSERTO DICHIARA
del @InvoiceNumber (100) dichiara
del @OrderNumber (100) dichiara che
del @PositionNumber (100) DICHIARA @InvoiceFormat stabiliti varchar del
del @InvoiceFormat (i 100) = (InvoiceFormat prescelto dall'INSERITO DA)
se @InvoiceFormat = 'nuovo @InvoiceNumber STABILITO del Br/> BEGIN
del Format'< = (InvoiceNumber prescelto dall'INSERITO DA) @OrderNumber stabilito del
= (OrderNumber prescelto dall'INSERITO DA) @PositionNumber stabilito del
= (LineItemNo prescelto dall'INSERITO DA)

SE ESISTE (selezionare * a partire da InvoiceLines dove InvoiceNumber = @InvoiceNumber e OrderNumber = @OrderNumber e LineItemNo = cancellazione del
BEGIN
del @PositionNumber) da InvoiceLines dove InvoiceNumber = il @InvoiceNumber e OrderNumber = il @OrderNumber e LineItemNo = l'inserto del @PositionNumber
END
END
nel
di InvoiceLines
(InvoiceNumber, CustomerNo, LineItemNo, LineItemNo_Int, PartNo, CustomerPartNo, Quantity, UnitOfMeasure, UnitPrice, sconto, VAT_Tax, PONumber, PODate, OrderNumber, PackingSlip, PlantNumber, DepartmentNumber, AccountNumber, CompanyWarehouse, SalesOrderCarrier, LineItemPONumber, LineItemReleaseNumber, MKPositionNumber, TrackingNumber, InvoiceFormat) selezionano il
InvoiceNumber, CustomerNo, LineItemNo, LineItemNo_Int, PartNo, CustomerPartNo, Quantity, UnitOfMeasure, UnitPrice, Discount, VAT_Tax, PONumber, PODate, OrderNumber, PackingSlip, PlantNumber, DepartmentNumber, AccountNumber, CompanyWarehouse, SalesOrderCarrier, LineItemPONumber, LineItemReleaseNumber, MKPositionNumber, TrackingNumber, InvoiceFormat
dalla domanda INSERITA del
END


Insert:

insert nel
values
(
“31775ABC„ di InvoiceLines
(quantità del
InvoiceNumber, del
CustomerNo, del
LineItemNo, del
LineItemNo_Int, del
PartNo, del
CustomerPartNo, del
, sconto del
UnitOfMeasure, del
UnitPrice, del
,
VAT_Tax,
PONumber,
PODate,
OrderNumber,
PackingSlip,
PlantNumber,
DepartmentNumber,
AccountNumber,
CompanyWarehouse,
SalesOrderCarrier,
LineItemPONumber,
LineItemReleaseNumber,
MKPositionNumber,
TrackingNumber,
InvoiceFormat
),
            “013608„,
“20„,
20,
“TESTPART„,
“TESTPART2„,
“2„,
'',
“26.70„,
'',
'',
“166TEST„,
'',
“31TEST„,
'',
'',
'',
'',
'',
Br/>)
“di UPAC„, del
'', del
'', del
del
'', del Format'< del
“di TESTTRACKINGNUM„, nuovo ' class= del

Risposta : Inserire il funzionamento all'interno di un innesco: Errore che converte il tipo di dati varchar in numerico

>dgmg: L'applicazione che sta denominando la dichiarazione dell'inserto ha comandi che permetteranno soltanto che una singola fila sia inserita alla volta.

Ancora pericoloso, dovuto la natura globale di un innesco.  Non dovreste presupporre che TUTTI GLI aggiornamenti proverranno SEMPRE da quell'applicazione.  In particolare, quando le tecniche di codificazione adeguate di innesco sono assicurazione poco costosa. : >)




>Delle altre idee?
Ridurre l'inserto alla prima colonna soltanto.  Eventualmente funziona. Successivamente aggiungere alcune colonne alla volta fino a trovano la colonna/dati offendenti.
Altre soluzioni  
 
programming4us programming4us