"Column 'PK1' not found" 在 iAnywhere.Data.SQLAnywhere.SACommand.ExecuteNonQuery()

"Column 'PK1' not found" at 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

以下是 table 详细信息:

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

当我 运行 涉及将数据插入 EmailInspectionQuery 的 C#/.NET 源代码时,我收到此错误,但这对我来说没有任何意义,因为 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()}

有人有什么建议吗? TIA.

发现问题,需要更改此行:

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 )