【问题标题】:Insert a sequence and SELECT插入一个序列并选择
【发布时间】:2011-07-08 18:41:00
【问题描述】:

我正在尝试插入到表中,其中 ID 是序列中的下一个,而其他一些值是从表中提取的。我知道这行不通:

INSERT INTO ORDERS(order_id, foo1, foo2, foo3
VALUES(SEQUENCE_ORDERS.nextval,(SELECT foo1, foo2, foo3
                                FROM bar
                                WHERE X = Y))

我刚刚尝试过,但出现“没有足够的值”错误。

我想知道什么是正确的语法才能让它工作。我在 Oracle DB 中使用 PLSQL(我正在编写的过程的一部分)。

我知道选择不应该在 VALUES() 内,但我如何也添加序列?我能想到的唯一选择是插入触发器,但我宁愿不必这样做。

编辑:谢谢大家,正如我所想,每个人都发布了。不知道在选择中有序列是可以的。

【问题讨论】:

  • 有时我只需要输入我遇到的问题,然后它就突然出现在我身上。感谢那些回答!

标签: sql oracle plsql insert sequence


【解决方案1】:
INSERT INTO ORDERS(order_id, foo1, foo2, foo3)
SELECT SEQUENCE_ORDERS.nextval,foo1, foo2, foo3
                                FROM bar
                                WHERE X = Y

【讨论】:

  • @DCookie - 哈哈,:) 只比你快 11 秒
  • @DCookie:现在乖一点——dcp是个小偷! =)
  • +1,我会尊重你的闪电打字技巧,而且你也修复了语法错误
  • @谢谢伙计们,你们今天把我搞砸了;)。
  • @Null,请记得“接受”@DCP 的回答,别忘了给服务员小费。
【解决方案2】:

试试:

INSERT INTO ORDERS(order_id, foo1, foo2, foo3
SELECT SEQUENCE_ORDERS.nextval, foo1, foo2, foo3
                                FROM bar
                                WHERE X = Y

【讨论】:

    【解决方案3】:

    尝试将 SEQUENCE 移至 SELECT 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-30
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多