Frage : Das Arbeiten nicht innerhalb eines Auslösers einsetzen: Störung, welche die Datenart varchar in numerisches umwandelt

Hallo,

I morgens Mühe habend, in eine Tabelle using einen Auslöser einzusetzen.  Die sonderbare Sache ist, dass es späte letzte Woche funktionierte.  Die einzige Sache, die ich addierte, war ein Index zum Tabelle auf InvoiceNumber und LineItemNo_Int.

If ich den Auslöser, die Daten sperre, eingesetzt zt.  Wenn ich dem Auslöser ermögliche, erhalte ich eine Störung:

Msg 8114, Niveau 16, Zustand 5, Verfahren trig_InvoiceLinesInsertCheck, Linie 27
Error die Datenart varchar in numeric.

Table Def umwandelnd:
CREATE TABELLE [dbo]. [InvoiceLines] (
[InvoiceLinesID] [int] IDENTITÄT (1.1) NICHT UNGÜLTIG,
[InvoiceNumber] [varchar] (100) SQL_Latin1_General_CP1_CI_AS NULL,
[CustomerNo] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[LineItemNo] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[LineItemNo_Int] [int,] SORTIEREN, NULL,
[PartNo] [varchar] (100) SQL_Latin1_General_CP1_CI_AS NULL,
[CustomerPartNo] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[die Quantität] [varchar] (100) SORTIEREN SQL_Latin1_General_CP1_CI_AS NULL,
[UnitOfMeasure] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[UnitPrice] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[der Diskont] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[VAT_Tax] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[PONumber] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[PODate] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[OrderNumber] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
SORTIEREN [PackingSlip] [varchar] (100) SORTIEREN SQL_Latin1_General_CP1_CI_AS NULL,
[PlantNumber] [varchar] (100), SQL_Latin1_General_CP1_CI_AS NULL,
[DepartmentNumber] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[AccountNumber] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[CompanyWarehouse] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[SalesOrderCarrier] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[LineItemPONumber] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[LineItemReleaseNumber] [varchar] (100) SORTIEREN SQL_Latin1_General_CP1_CI_AS NULL,
[MKPositionNumber] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[TrackingNumber] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL,
[InvoiceFormat] [varchar] (100) SORTIEREN, SQL_Latin1_General_CP1_CI_AS NULL
SORTIEREN) AUF [PRIMÄR]


Trigger Def:

alter AUSLÖSER [dbo]. [trig_InvoiceLinesInsertCheck] AN [dbo]. [InvoiceLines]
ANSTELLE VON EINSATZ
AS
BEGIN
gesetztem nocount on
ERKLÄREN, @InvoiceNumber varchar (100)
erklären, @OrderNumber varchar (100)
erklären, dass @PositionNumber varchar (100)
@InvoiceFormat varchar (100)
gesetztes @InvoiceFormat = (auserwähltes InvoiceFormat von EINGESETZT)
wenn @InvoiceFormat = 'neues Format'< Br/> BEGIN
GESETZTES @InvoiceNumber = (auserwähltes InvoiceNumber von EINGESETZT)
gesetztes @OrderNumber = (auserwähltes OrderNumber von EINGESETZT)
gesetztes @PositionNumber = (auserwähltes LineItemNo von EINGESETZT)

ERKLÄREN, WENN EXISTIERT (* von InvoiceLines vorwählen in dem InvoiceNumber = @InvoiceNumber und OrderNumber = @OrderNumber und LineItemNo = @PositionNumber)
BEGIN
Löschung von InvoiceLines, in dem InvoiceNumber = @InvoiceNumber und OrderNumber = @OrderNumber und LineItemNo = @PositionNumber
END
END
Einsatz in InvoiceLines
(InvoiceNumber, CustomerNo, LineItemNo, LineItemNo_Int, PartNo, CustomerPartNo, Quantity, UnitOfMeasure, UnitPrice, Diskont, VAT_Tax, PONumber, PODate, OrderNumber, PackingSlip, PlantNumber, DepartmentNumber, AccountNumber, CompanyWarehouse, SalesOrderCarrier, LineItemPONumber, LineItemReleaseNumber, MKPositionNumber, TrackingNumber, InvoiceFormat)

InvoiceNumber, CustomerNo vorwählen, 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
von EINGESETZTER
END


Insert Frage:

insert in InvoiceLines
(
InvoiceNumber,
CustomerNo,
LineItemNo,
LineItemNo_Int,
PartNo,
CustomerPartNo,
Quantität,
UnitOfMeasure,
UnitPrice,
Diskont,
VAT_Tax,
PONumber,
PODate,
OrderNumber,
PackingSlip,
PlantNumber,
DepartmentNumber,
AccountNumber,
CompanyWarehouse,
SalesOrderCarrier,
LineItemPONumber,
LineItemReleaseNumber,
MKPositionNumber,
TrackingNumber,
InvoiceFormat
)
values
(
„31775ABC“,
            „013608“,
„20“,
20,
„TESTPART“,
„TESTPART2“,
„2“,
'',
„26.70“,
'',
'',
„166TEST“,
'',
„31TEST“,
'',
'',
'',
'',
'',
„UPAC“,
'',
'',
'',
„TESTTRACKINGNUM“,
'neues Format'< Br/>)

Antwort : Das Arbeiten nicht innerhalb eines Auslösers einsetzen: Störung, welche die Datenart varchar in numerisches umwandelt

>dgmg: Die Anwendung, die die Einsatzaussage benennt, hat Kontrollen, die nur erlauben, dass eine einzelne Reihe auf einmal eingesetzt.

Noch gefährlich, wegen der globalen Art eines Auslösers.  Sie sollten nicht annehmen, dass ALLE Updates IMMER von dieser Anwendung entstehen.  Besonders wenn korrekte Triggerkodierungtechniken preiswerte Versicherung sind-. : >)




>Irgendwelche anderen Ideen?
Den Einsatz auf nur der ersten Spalte verringern.  Hoffnungsvoll funktioniert es. Einige Spalten auf einmal bis mehrmals hintereinander hinzufügen finden die beleidigenspalte/die Daten.
Weitere Lösungen  
 
programming4us programming4us