我知道我可以将数组传递给
addSql
。但我也可以添加多个用分号分隔的 SQL 语句作为单个字符串。该语法是否在任何地方指定(最好在 SQL 标准中,或其他地方)?如果是这样,它实际上是由分号分隔或以分号终止的一系列语句吗?
(我不确定这个答案是否正确,所以我愿意接受另一个,即使它只是证实。或否定,但有细节。)
虽然在 PHP 或 Doctrine 的文档中我什至没有发现它被远程处理过,但似乎 PHP 的
PDO::query
和 Doctrine 的addSql
(以及许多其他语言和框架中的等效项)使用的绑定样式既不是 SQL/CLI,也不是 SQL/OLB,也不是嵌入式 SQL,而是直接 SQL。因此,“信息技术——数据库语言——SQL——第 2 部分:基础(SQL/Foundation)”的相关产品是:
<direct SQL statement> ::=
<directly executable statement> <semicolon>
强制使用分号。它还不允许多个语句。 (除非实现将它们定义为包含在
<direct implementation-defined statement>
中,这在 <directly executable statement>
中是可能的。它可以是任何东西,包括由分号分隔的一系列 <directly executable statement>
s。但最后的分号在外面,所以仍然是强制性的.) 如果要执行多条SQL语句,应该分别提供。可以通过实现进行批处理(这是标准不关心的细节)。当 addSql
在同一迁移中被多次调用时,这就是 Doctrine 所做的。它甚至默认将它们包装在一个事务中。