2016-09-07 48 views
0

我有一張表,我正嘗試使用liquibase創建。如何在LiquiBase約束中指定允許值的列表?

在普通的舊SQL,我會寫

CREATE TABLE foo_bar (
    foo_bar_id varchar2(40) NOT NULL, 
    is_foo  number(1)  NOT NULL, 
    is_bar  number(1)  NOT NULL, 
    CHECK (is_foo IN (0, 1)), 
    CHECK (is_bar IN (0, 1)), 
    PRIMARY KEY(foo_bar_id) 
); 

什麼是liquibase XML等效(的CHECK (is_foo IN (0, 1))聲明)?

回答

1

Liquibase目前不直接支持檢查約束。你需要運行一個自定義SQL來做到這一點:

<createTable name="foo_bar"> 
    .... here is the table definition without the check constraint 
</createTable> 
<sql splitStatements="false"> 
    alter table foo_bar 
    add constraint check_is_foo CHECK (is_foo IN (0, 1)) 
</sql> 
<sql splitStatements="false"> 
    alter table foo_bar 
    add constraint check_is_bar CHECK (is_bar IN (0, 1)) 
</sql> 
+0

這對我有效。只是一個附加說明,CHECK約束名稱需要全局唯一(在模式中) – Vihung

+0

@Vihung:不僅檢查約束,所有**約束名稱。 –