2016-11-18 8 views
0

В настоящее время я работаю с этим триггером:"Колонка 'ПК1' не найден" в iAnywhere.Data.SQLAnywhere.SACommand.ExecuteNonQuery()

CREATE TRIGGER "TrigUploadEmailInspectionInsert" AFTER INSERT 
ORDER 1 ON "EmailInspectionQuery" 
REFERENCING OLD AS initial NEW AS updated 
FOR EACH ROW 
BEGIN 
    DECLARE count int; 
    IF f_are_triggers_enabled() = 1 THEN 
     SELECT Count(PK1) INTO count FROM TransactionUpload 
     WHERE PK1 = updated.ID AND TYPE = 'EMAIL_QUERY'; 
     CASE 
     WHEN count = 0 THEN 
     INSERT INTO TransactionUpload (PK1, PK2, TYPE, ACTION, ACTION_SEQ, UPD_TMSTP, UI_SAVE_STATUS) 
    VALUES (PK1, 'N/A', 'EMAIL_QUERY', 'I', 0, CURRENT TIMESTAMP, NULL) 
     END CASE; 
    END IF; 
END 

Вот детали стола:

TransactionUpload 
TYPE,12,nvarchar(12),N 
PK1,255,nvarchar(255),N 
PK2,12,nvarchar(12),N 
ACTION_SEQ,4,integer,N 
ACTION,1,nvarchar(1),N 
MOBILE_STATUS,10,nvarchar(10),Y 
MOBILE_STATUS_SET_INACT,1,nvarchar(1),Y 
UPD_TMSTP,8,timestamp,Y 
SYNC_SAVE_STATUS,1,char(1),Y 
UI_SAVE_STATUS,1,char(1),Y 
ASYNC_PROCESSING,1,char(1),Y 
MYSAPSSO2,1024,char(1024),Y 

EmailInspectionQuery 
column_name,width,base_type_str,nulls 
ID,12,nvarchar(12),N 
CR_DATE,8,timestamp,Y 
ERNAME,12,nvarchar(12),Y 
AUFNR,12,nvarchar(12),Y 
INSP_DUE,8,timestamp,Y 
INSP_STATUS,20,nvarchar(20),Y 
EQUNR,18,nvarchar(18),Y 
HEQUIPMENT,128,nvarchar(128),Y 
HOPEN_RECOMMENDATIONS,1,char(1),Y 
HTERRITORY,30,nvarchar(30),Y 

Когда я запускаю исходный код C# /. NET, который включает вставку данных в EmailInspectionQuery, я получаю эту ошибку, но для меня это не имеет никакого смысла, потому что TransactionUpload явно имеет столбец PK1. Вот исключение:

ex.InnerException.InnerException {"Column 'PK1' not found"} 
    Data: {System.Collections.ListDictionaryInternal} 
    ErrorCode: -2147467259 
    Errors: {iAnywhere.Data.SQLAnywhere.SAErrorCollection} 
    HResult: -2147467259 
    HelpLink: null 
    InnerException: null 
    Message: "Column 'PK1' not found" 
    NativeError: -143 
    Source: "SQL Anywhere .NET Data Provider" 
    StackTrace: " at iAnywhere.Data.SQLAnywhere.SACommand.ExecuteNonQuery()\r\n at System.Data.Common.DbCommand.ExecuteNonQueryAsync(CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.<ExecuteAsync>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown 
---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.<UpdateAsync>d__0.MoveNext()" 
    TargetSite: {Int32 ExecuteNonQuery()} 

У кого-нибудь есть предложения? ТИА.

ответ

0

Нашли проблему, необходимо изменить эту строку:

INSERT INTO TransactionUpload (PK1, PK2, TYPE, ACTION, ACTION_SEQ, UPD_TMSTP, UI_SAVE_STATUS) 
    VALUES (PK1, 'N/A', 'EMAIL_QUERY', 'I', 0, CURRENT TIMESTAMP, NULL) 

К,

INSERT INTO TransactionUpload (ID, PK2, TYPE, ACTION, ACTION_SEQ, UPD_TMSTP, UI_SAVE_STATUS) 
    VALUES (updated.ID, 'N/A', 'EMAIL_QUERY', 'I', 0, CURRENT TIMESTAMP, NULL) 

 Смежные вопросы

  • Нет связанных вопросов^_^