我试图使用liquibase插入标记插入数据.当我输入一个数字到值标签时,它工作正常.但我正在寻找一个简单的函数来处理默认日期(数据库的当前DateTime),即使我没有将它作为我的表定义的一部分.
例如:
<changeSet id="abc_1" author="Me">
<insert tableName="Emp" schemaName="XYZ">
<column name="name" value="Me"/>
<column name="create_date" value ="1328055111692"/>
<column name="profile_last_update" value="currentDateTimeFunction"/>
<column name="group_name" value="BlahBlah"/>
</insert>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
这里<column name="create_date" value ="1328055111692"/>工作正常,它插入到数据库中.我也试过使用<defaultValueDate>,<valueDate>但他们也需要一些指定格式的日期输入.
我正在寻找一些像currentDateTimeFunction这样的函数,它将根据我正在使用的数据库类型转换为UNIX_TIMESTAMP()或SYSDATE或now().请帮我.
谢谢你,Ramya
Nat*_*and 53
您需要做的是使用changelog参数并定义每个数据库类型替换的"now"或"current_timestamp"参数.
在您的顶部<databaseChangeLog>,通常在您的外部<changeset>,添加属性的每个数据库定义,如:
<property name="now" value="sysdate" dbms="oracle"/>
<property name="now" value="now()" dbms="mysql"/>
<property name="now" value="now()" dbms="postgresql"/>
Run Code Online (Sandbox Code Playgroud)
然后在你的变更集中使用
<column name="Join_date" defaultValueFunction="${now}"/>
Run Code Online (Sandbox Code Playgroud)
注意使用defaultValueFunction,让liquibase知道不要将它解析为日期或引用它.
Ram*_*mya 14
谢谢您的回复.这很有帮助.以下是我所做的,它对我有用.
<property name="now" value="UNIX_TIMESTAMP()" dbms="mysql"/>
<changeSet id="emp_1" author="Me">
<insert tableName="Emp" schemaName="XYZ">
<column name="EmpName" value="abc"/>
<column name="Join_date" valueDate="${now}"/>
<column name="Profile_last_update" valueDate="${now}"/>
<column name="group_name" value="BlahBlah"/>
</insert>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
再次感谢,Ramya
小智 5
如果使用的是DB2,则可以执行以下操作:
<changeSet id="emp_1" author="Me">
<insert tableName="Emp" schemaName="XYZ">
<column name="EmpName" value="abc"/>
<column name="Join_date" valueDate="CURRENT TIMESTAMP"/>
<column name="Profile_last_update" valueDate="CURRENT TIMESTAMP"/>
<column name="group_name" value="BlahBlah"/>
</insert>
</changeset>
Run Code Online (Sandbox Code Playgroud)
结果SQL不加引号,因此仅调用DB2函数。
| 归档时间: |
|
| 查看次数: |
39943 次 |
| 最近记录: |