Cuestión : Insertar el trabajo dentro de un disparador: Error que convierte el tipo de datos varchar a numérico

Hola,

I que tiene apuro el insertar en una tabla usar un disparador.  La cosa extraña es que era trabajo atrasado la semana pasada.  La única cosa que agregué era un índice a la tabla en InvoiceNumber y se inserta LineItemNo_Int.

If inhabilito el disparador, los datos.  Cuando permito el disparador, consigo un error:

Msg 8114, nivel 16, estado 5, trig_InvoiceLinesInsertCheck, línea 27
Error del procedimiento que convierte el tipo de datos varchar a numeric.

Table Def: TABLA del
CREATE [dbo]. [InvoiceLines] IDENTIDAD (del
[InvoiceLinesID] [internacional] (1.1) NO NULOS,
[InvoiceNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[CustomerNo] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[LineItemNo] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[LineItemNo_Int] [internacional] la FALTA DE INFORMACIÓN, el
[PartNo] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[CustomerPartNo] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[cantidad] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[UnitOfMeasure] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[UnitPrice] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[descuento] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[VAT_Tax] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[PONumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[PODate] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[OrderNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS,
[PackingSlip] [varchar] (100) COMPAGINA LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[PlantNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[DepartmentNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[AccountNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[CompanyWarehouse] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[SalesOrderCarrier] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[LineItemPONumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[LineItemReleaseNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[MKPositionNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[TrackingNumber] [varchar] (100) COMPAGINAR LA FALTA DE INFORMACIÓN de SQL_Latin1_General_CP1_CI_AS, el
[InvoiceFormat] [varchar] (100) COMPAGINAR SQL_Latin1_General_CP1_CI_AS NULL
) EN el


Trigger Def: DISPARADOR del

alter [dbo]. [trig_InvoiceLinesInsertCheck] ENCENDIDO [dbo]. El
[de InvoiceLines] EN VEZ del on
del nocount del
AS
BEGIN
del PARTE MOVIBLE DECLARA
del @InvoiceNumber (los 100) declara
del @OrderNumber (los 100) declara que
del @PositionNumber (los 100) DECLARA @InvoiceFormat determinados varchar del
del @InvoiceFormat (los 100) = (InvoiceFormat selecto de INSERTADO) el
si @InvoiceFormat = 'nuevo @InvoiceNumber DETERMINADO del Br/> BEGIN
del Format'< = (InvoiceNumber selecto de INSERTADO) @OrderNumber determinado del
= (OrderNumber selecto de INSERTADO) @PositionNumber determinado del
= (LineItemNo selecto de INSERTADO) el

SI EXISTE (seleccionar * de InvoiceLines donde InvoiceNumber = @InvoiceNumber y OrderNumber = @OrderNumber y LineItemNo = cancelación del
BEGIN
del @PositionNumber) de InvoiceLines donde InvoiceNumber = el @InvoiceNumber y OrderNumber = el @OrderNumber y LineItemNo = el parte movible del @PositionNumber
END
END
en el
de InvoiceLines
(InvoiceNumber, CustomerNo, LineItemNo, LineItemNo_Int, PartNo, CustomerPartNo, Quantity, UnitOfMeasure, UnitPrice, descuento, VAT_Tax, PONumber, PODate, OrderNumber, PackingSlip, PlantNumber, DepartmentNumber, AccountNumber, CompanyWarehouse, SalesOrderCarrier, LineItemPONumber, LineItemReleaseNumber, MKPositionNumber, TrackingNumber, InvoiceFormat) seleccionan el
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
de la pregunta INSERTADA del
END


Insert:

insert en el
values
(
“31775ABC” de InvoiceLines
(cantidad del
InvoiceNumber, del
CustomerNo, del
LineItemNo, del
LineItemNo_Int, del
PartNo, del
CustomerPartNo, del
, descuento 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/>)
“de UPAC”, del
'', del
'', del
del
'', del Format'< del
de “TESTTRACKINGNUM”, nuevo ' class= del

Respuesta : Insertar el trabajo dentro de un disparador: Error que convierte el tipo de datos varchar a numérico

>dgmg: El uso que está llamando la declaración del parte movible tiene controles que permitan solamente que una sola fila sea insertada a la vez.

Todavía peligroso, debido a la naturaleza global de un disparador.  Usted no debe asumir que TODAS LAS actualizaciones originarán SIEMPRE de ese uso.  Especialmente, cuando las técnicas de codificación apropiadas del disparador son seguro barato. : >)




>¿Otras ideas?
Reducir el parte movible a la primera columna solamente.  Esperanzadamente trabaja. Sucesivamente agregar algunas columnas a la vez hasta encuentran la columna/los datos que ofenden.
Otras soluciones  
 
programming4us programming4us