sql - 我想使用 union all 进行插入,其中有一列从序列中获取值

标签 sql database oracle plsql

我试过了

INSERT INTO my_test_one (rollno,name, sirname, Dept) 
(select rollno_seq.nextval,'name1','sirname1', Dept 
   FROM my_test_one_backup 
  WHERE dept = 500      
UNION ALL
 select rollno_seq.nextval,'name1','sirname1', Dept 
   FROM my_test_one_backup 
  WHERE dept = 501 );

在执行此操作时出现错误

错误报告:

SQL Error: ORA-02287: sequence number not allowed here
02287. 00000 - "sequence number not allowed here"

最佳答案

在这种情况下,不要使用 UNION,而是使用单个 SELECTOR:

SELECT rollno_seq.nextval,'name1','sirname1', Dept 
FROM my_test_one_backup 
WHERE dept = 500 OR dept = 501

关于sql - 我想使用 union all 进行插入,其中有一列从序列中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8327011/

相关文章:

mysql - 自动递增作为 SQL 中的计数器

sql-server - 具有 2 个结果的程序产生相同的输出

oracle - SELECT .. FOR UPDATE 给出错误 "cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc."

oracle - 如何减少 oracle 中的撤消表空间大小?

sql - 根据另一个表中的条件选择一个表中的记录

javascript - Sequelize 抛出 ER_CANT_CREATE_TABLE : Can't create table 'SequelizeMeta' (errno: 30)

MySQL 根据另外两列的值自动递增 ID

sql - 什么时候引用完整性不合适?

ruby-on-rails - 我可以使用 Rails 应用程序将 JSON 数据导入数据库吗?

oracle - Oracle 10g 中 'ddl_lock_timeout' 的替代方案