【发布时间】:2020-02-29 18:02:41
【问题描述】:
我正在使用新的 seancorfield/next.jdbc 库在 clojure 中编写一个简单的数据库迁移代码。
如何一次执行多个 SQL 语句?用例是我有一个 SQL 文件,其中包含用于从一个版本迁移到下一个版本的查询代码。 next.jdbc/execute! 只按设计执行一条语句。
【问题讨论】:
我正在使用新的 seancorfield/next.jdbc 库在 clojure 中编写一个简单的数据库迁移代码。
如何一次执行多个 SQL 语句?用例是我有一个 SQL 文件,其中包含用于从一个版本迁移到下一个版本的查询代码。 next.jdbc/execute! 只按设计执行一条语句。
【问题讨论】:
是否可以在单个 JDBC 操作中执行多个语句取决于数据库。一些数据库允许在一个操作中使用多个语句,用分号分隔。如果 JDBC 驱动支持,next.jdbc 也会支持。
如果您的 JDBC 驱动程序不支持它,您需要进行多次 execute! 调用。一些数据库允许您在一个事务中包装多个 DDL 操作(其中一些忽略事务并单独提交每个 DDL 操作),一些数据库明确禁止围绕 DDL 操作的事务。
【讨论】: