插入序列和SELECT

时间:2011-07-08 18:41:01

标签: sql oracle plsql insert sequence

我正在尝试插入一个表,其中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(我正在编写的程序的一部分)。

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

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

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:1)

尝试:

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

答案 2 :(得分:0)

尝试将SEQUENCE移动到SELECT语句。