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
我有一个 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