oracle的PK列追加(-)减号Table

Appended (-) minus Symbol in PK column of oracle Table

我有一个 Biztalk 应用程序,它正在接收 xml 文件并使用 WCF-CUSTOM 适配器将数据简单地插入到一个 oracle table 中。我的问题是有时它在主键列中插入负数。对于主键插入,我使用序列。

我也手动仔细检查了序列,它没有像 NEXTVAL 那样生成负数。

下面是我的序列:

CREATE SEQUENCE  "TEST"."SEQ_TESTBNUMBER_TMP"  
MINVALUE 1 MAXVALUE 999999999999999999 
INCREMENT BY 1 START WITH 187 
NOCACHE  NOORDER  NOCYCLE ;

这意味着我在主键列中得到的值是这样的

197
-196
195
194
193
192
191
190
189
188
-187
-185
-186
-184
183
182
181
-169
-168
167
166
165
164

显示为负值但实际上不是。它按顺序插入,但在某些情况下,它只是在其前面附加 (-) 减号。不知道为什么。

触发码:

TRIGGER "TEST"."TR_TESTBNUMBER_TMP" 
    before INSERT ON "TEST"."NUMBER_RL" 
    FOR EACH row 
BEGIN 
    IF inserting THEN 
        IF :NEW."PKID" IS NULL THEN
            SELECT SEQ_TESTBNUMBER_TMP.nextval 
            INTO :NEW."PKID" 
            FROM dual;
        END IF;
    END IF;
END;

IF :NEW."PKID" IS NULL THEN

以上条件不足以处理序列值的正确插入。您的应用程序正在为 PKID 插入 负值 而不是 空值 。因此,以下条件将失败:

IF :NEW."PKID" IS NULL THEN

每当 PKID 有一个负值时,上述条件就会失败并直接将负值插入 table。您还需要在 IF 条件下处理负值。

修改为:

IF :NEW."PKID" IS NULL OR :NEW."PKID" < 0 THEN