我不知道哪个是使用新的ID SEQUENCE向ORACLE 11g表插入新行的正确方法。我应该在插入操作之前向我的表写一个类似的触发器:
CREATE OR REPLACE TRIGGER "myTableTrigger"
BEFORE INSERT ON "myTable" FOR EACH ROW
WHEN (NEW."Id" IS NULL OR NEW."Id" = 0) BEGIN
SELECT "myTable_SEQ".nextval INTO :NEW."Id" FROM dual;
END;
或者我应该使用executioncalar()获取新的序列ID,然后使用新的ID插入?但这种方式执行2个不同的查询。
我不知道是否还有其他选择吗?我可以在一个查询中执行此操作吗?
答案 0 :(得分:0)
通常使用触发器来执行此操作,但在11G中您不需要DUAL中的SELECT:
CREATE OR REPLACE TRIGGER "myTableTrigger"
BEFORE INSERT ON "myTable" FOR EACH ROW
WHEN (NEW."Id" IS NULL OR NEW."Id" = 0) BEGIN
:NEW."Id" := "myTable_SEQ".nextval;
END;
当然你没有拥有来使用触发器,你可以在insert语句中使用序列:
insert into "MyTable" ("Id", ...) values ("myTable_SEQ".nextval, ...);