繁体   English   中英

Oracle SQL,在单独的选择查询中使用序列

[英]Oracle SQL, using a sequence in a separate select query

我正在尝试从select语句向表中插入一些数据。 我知道我可以这样做:

insert into new_logs (idLog, logEntry)
(select idLog, logEntry from old_logs)

但是,当我需要传递序列值时,尝试执行这种类型的查询时遇到问题:

insert into new_logs (idLog, logEntry)
(select LOGSEQ.NEXTVAL, logEntry from old_logs) 

我认为问题是因为该序列来自对偶表,但是上面的查询隐含了它来自old_logs表。

我也尝试过

insert into new_logs (idLog, logEntry)
select next_value for LOGSEQ, logEntry from old_logs

但是我仍然无法正常工作。 有人可以告诉我我要做什么吗? 我要做的就是使用选择查询另一个模式上的序列运行插入语句。

如果您在old_logs中有重复的logentry字段,则将查询插入到new_logs(idLog,logEntry)(从old_logs中选择LOGSEQ.NEXTVAL,logEntry)中可能会出错。

尝试这个:-

    insert into new_logs (idLog, logEntry)
select LOGSEQ.NEXTVAL, logEntry from (select distinct logEntry  from old_logs);

您的查询是正确的,如下所示:

SQL> CREATE TABLE old_logs AS
  2     SELECT ROWNUM idLog, 'a' logEntry FROM dual CONNECT BY LEVEL <= 10;

Table created

SQL> CREATE TABLE new_logs AS
  2     SELECT * FROM old_logs WHERE 1 = 2;

Table created

SQL> CREATE SEQUENCE logseq;

Sequence created

SQL> INSERT INTO new_logs (idLog, logEntry)
  2  (SELECT LOGSEQ.NEXTVAL, logEntry FROM old_logs);

10 rows inserted

您究竟会得到什么错误消息?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM