【发布时间】:2020-09-06 21:41:05
【问题描述】:
我正在尝试改进将元素插入 Oracle 数据库的批处理服务。目前我在插入过程中遇到性能问题。
现在我的插入字符串是这样的:
INSERT INTO MYTABLE (COL1, COL2, COL3) VALUES (:COL1, :COL2, :COL3);
而字符串的执行类似于:
with connection.cursor() as cursor:
cursor.executemany(sql, list)
在这之前没有什么不寻常的吧?!
但是 MYTABLE 有一个 PK 列,该列在插入执行时由触发器(从序列表中找出 PK)填充。请注意,我将有几个并行进程执行相同的插入,每个人都访问触发器,因此访问序列表。
从我最初的研究中我发现我可以直接在插入中删除触发器并访问序列表,这是我的问题,我该如何编写这个插入字符串?
这样的东西是行不通的:
INSERT INTO MYTABLE (ID, COL1, COL2, COL3) VALUES (MYTABLE_SQ.nextval, :COL1, :COL2, :COL3);
也不这样做(即使以正确的顺序设置列):
INSERT INTO MYTABLE VALUES (MYTABLE_SQ.nextval, :COL1, :COL2, :COL3);
有什么想法吗?
【问题讨论】:
-
您收到的完整错误信息是什么? Oracle SQL 允许像在 INSERT 语句中那样引用序列。
标签: python sql oracle sequence cx-oracle