oracle - 如何使用 runAlways SQL changeSet
问题描述
我正在测试 LiquiBase,所以我创建了第一个更改日志来测试安装和设置并且它有效
--liquibase formatted sql
--changeset bob:1
create table test1 (
id int primary key,
name varchar(255)
);
我要测试的是runAlways,所以我创建了新的变更集:
-- liquibase formatted sql
-- changeset betlista:4
-- runAlways: true
insert into test1(id, name) values(
(select nvl(max(id) + 1, 1) from test1)
, 'test ' || sysdate
);
我的期望是,当我运行它(不增加版本)时,它会将新记录插入表中,但事实并非如此。仅在我增加版本时才插入。
解决方案
哦,我发现了一个问题
- 后面不能有空格
runAlways:
- 它必须与变更集在一条线上
这对我来说很好
-- liquibase formatted sql
-- changeset betlista:8 runAlways:true
insert into test1(id, name) values(
(select nvl(max(id) + 1, 1) from test1)
, 'test 8 ' || to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')
);
选择
在前面的示例中,更改日志是基于 SQL 的,当然,这不是唯一的选择。
我更喜欢将 changelog 作为 XML(因为我可以在我的 IDE 中完成代码)并将脚本作为 SQL(因为大多数人都熟悉它)。
所以解决方案是
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-3.8.xsd ">
<changeSet id="10" author="betlista" runAlways="true">
<sqlFile path="insert_test1.sql" relativeToChangelogFile="true" />
</changeSet>
</databaseChangeLog>
insert into test1(id, name) values(
(select nvl(max(id) + 1, 1) from test1)
, 'test 10 ' || to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')
);
推荐阅读
- java - 如果我将一个递归调用除以另一个,我会得到一个无限循环吗?
- mongodb - 从 AWS Glue 连接到 MongoDB
- google-colaboratory - 如何在 Google Colab 中更改文件名
- ruby-on-rails - 尝试获取资产时无法加载 sqlite3_native.so:预编译
- if-statement - 如何在 docment.getElementById.style.background 中设置“if”条件?
- javascript - 在反应应用程序中加载图像后滚动到 ID
- c++ - 如何通过回调在C++中做Gtest
- c# - 如何根据特定模式从内存缓存中删除一个或多个键?
- laravel - laravel hasManyDeepFromRelations 与 group by
- python - Matplotlib 条形图动画在 Jupyter Notebook 中不起作用