sql - sql中的序列错误。此处不允许使用序列号

标签 sql oracle oracle11g

我试图运行以下查询以插入ID随节点加载到表中而自动增加的数量的节点。

但是,每当我运行它时,我都会得到错误ORA-02287: sequence number not allowed here

INSERT INTO V1144Engine.T_NODES VALUES
  (
    (SELECT V1144ENGINE.S_PK_NODES.NEXTVAL FROM dual),
    1,
    'Chemistry of Life',
    0,1,
    SYSDATE,
    NULL,
    'CON.3.1',
    NULL
  );

我试过运行
SELECT V1144ENGINE.S_PK_NODES.NEXTVAL from dual

这工作正常,并返回我想要的号码。

我该如何解决?我正在Oracle 11g上运行。

如果我仍然可以在电子表格中进行查询,并且查询仍然可以在一行上运行,那也将不胜感激。

最佳答案

不需要内部SELECT。简单地

INSERT INTO V1144Engine.T_NODES 
  VALUES(V1144ENGINE.S_PK_NODES.NEXTVAL,
         1,
         'Chemistry of Life',
         0,
         1,
         SYSDATE,
         null,
         'CON.3.1',
         null);

但是,通常,您希望在INSERT语句中列出要为其提供值的列。这不仅可以记录列,以便将来的开发人员不必查找表中列的顺序,而且还可以在将来将新列添加到表中时为您提供保护。
INSERT INTO V1144Engine.T_NODES( <<list of columns>> ) 
  VALUES(V1144ENGINE.S_PK_NODES.NEXTVAL,
         1,
         'Chemistry of Life',
         0,
         1,
         SYSDATE,
         null,
         'CON.3.1',
         null);

关于sql - sql中的序列错误。此处不允许使用序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267418/

相关文章:

oracle - 在oracle plsql中使用触发器填充代理键的优点

java - 如何与TLS1.2保护的oracle服务器建立连接?

sql - Oracle 11g - FOR 循环仅将工作日插入表中?

Oracle user_errors 表包含已删除对象的错误

sql - 终止 SQL Azure 中的所有用户连接

java - 通过代码进行 desc 命令

sql - Oracle 10 中的 GRANT 问题

mysql - 选择最新行

PHP mysql_query 语法错误?

mysql - CASE 表达式中 INT 列上的 ORDER BY 无法正常工作