Liquibase如何为Oracle映射布尔值



已知事实:Oracle不本质地支持布尔。因此,建议使用char(1)或数字(1),然后创建一个约束以将值限制为y/n或0/1。

话。在为Oracle数据库创建布尔时,Liquibase会创建一个数字(1)。有人知道它是否也创建了数据库约束?即:"检查((0,1)中的布尔)"

http://dba-presents.com/index.php/liquibase/29-liquibase-3-3-x-x-data-types-mappes-table

创建changelog:

<?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"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
   <changeSet author="arthur" id="42">
      <createTable tableName="bool_test">
        <column name="some_flag" type="boolean"/>
      </createTable>
   </changeSet>
</databaseChangeLog>

运行脚本

liquibase --changeLogFile=bool_test.xml update

显示表定义

c:>sqlplus arthur/password
SQL*Plus: Release 12.1.0.1.0 Production on Tue Dec 20 18:19:21 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select dbms_metadata.get_ddl('TABLE', 'BOOL_TEST') from dual;
DBMS_METADATA.GET_DDL('TABLE','BOOL_TEST')
--------------------------------------------------------------------------------
  CREATE TABLE "ARTHUR"."BOOL_TEST"
   (    "SOME_FLAG" NUMBER(1,0)
   ) SEGMENT CREATION DEFERRED
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  TABLESPACE "USERS"

最新更新