delimiter - db 中 "endDelimiter:@"的用途是什么(在我的例子中是 liquibase)

标签 delimiter liquibase

我刚开始使用 liquibase,并在其中一个变更日志中遇到了这一行:

--changeset NAME.SURNAME:1 endDelimiter:@ rollbackEndDelimiter:@

"endDelimiter:@"的用法是什么。我认为它取代了默认的结束定界符(定义行尾的字符),即 ";" 但为什么呢?

抱歉,如果我的问题格式不正确,这是我的第一个问题:)

最佳答案

如果变更集包含 SQL,例如创建一个存储过程(或函数),其中代码本身包含 ; 以分隔过程内部的语句。

如果 Liquibase 使用 ; 拆分代码,则会将不完整的 DDL 语句发送到数据库。因此,您需要有一个不同的分隔符来标记例如结束。 CREATE PROCEDURE 语句。

关于delimiter - db 中 "endDelimiter:@"的用途是什么(在我的例子中是 liquibase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51926898/

相关文章:

c++ - 什么会导致 std::cout 在我的字符串中丢失一些字符

mysql - 如何通过 powershell 使用 SQL 定界符

liquibase defaultValue vs defaultValueNumeric

java - LiquiBase问题,类路径资源[db/changelog/db.changelog-master.yaml]无法解析为URL,因为它不存在

java - 为什么从服务器启动时出现 "Failed to define class"WARN?

java - java中的分隔符

python - 使用两个分隔符将 CSV 导入 pandas

sql - 将 sql 结果导出到 CSV 时如何在单个单元格中使用逗号分隔值

Liquibase 尝试使用不正确的数据类型将数据插入到列中

spring - 使用内存 hsqldb、hibernate 和 liquibase 进行 Junit 测试