Documentation 关于IBM关于insert语句的Informix文档的混淆

Documentation 关于IBM关于insert语句的Informix文档的混淆,documentation,sql-insert,informix,insert-into,Documentation,Sql Insert,Informix,Insert Into,我目前正在使用Informix 12.10 FC6。我在insert语句的VALUES子句中找到了两个似乎相互矛盾的文档。这两个文档都来自IBM的Informix文档。有谁能解释这两者的区别,以及为什么它们不互相矛盾。让我困惑的是,有人似乎认为表达式不能添加到VALUES子句中,而有人确实这样做了。 我正在寻找一些关于我所缺少的东西的澄清 以下是链接: -问题中的又名“链接1”-从以下陈述开始: VALUES子句只接受常量值,不接受一般SQL表达式 -问题中的aka“Link 2”-全面介绍了

我目前正在使用Informix 12.10 FC6。我在insert语句的VALUES子句中找到了两个似乎相互矛盾的文档。这两个文档都来自IBM的Informix文档。有谁能解释这两者的区别,以及为什么它们不互相矛盾。让我困惑的是,有人似乎认为表达式不能添加到VALUES子句中,而有人确实这样做了。 我正在寻找一些关于我所缺少的东西的澄清

以下是链接:

-问题中的又名“链接1”-从以下陈述开始:

VALUES子句只接受常量值,不接受一般SQL表达式

-问题中的aka“Link 2”-全面介绍了INSERT语句,包括它在ESQL/C嵌入式SQL C代码和SPL存储过程语言代码中的使用。它列出了更多可以使用的选项,例如标记为“仅ESQL/C”和“Informix扩展”的主机变量。它还列出了“表达式”和“常量表达式”等选项

本教程过于简化了允许的内容

语法手册更全面、更正确。在VALUES子句中可以使用的内容仍然有一些限制,但它们比教程中的简单描述更具扩展性——但这是一个教程。说到细节,VALUES子句中的每个值都是单个值,可能是函数求值或其他表达式的结果。可以使用的SELECT语句的形式有严格的限制,但可以使用:

create table x(i integer not null primary key);
insert into x values(1024);
insert into x values((select max(i)+1 from x));

在SELECT中需要括号以及值子句中的括号,所以括号内的括号是必需的。

一般来说,如果你至少从每个你认为与另一个相矛盾的信息中找出信息,你会得到更好的回答。一个链接指向SQL教程,一个链接指向SQL语法指南。在这两者之间,我更相信语法指南而不是教程。