2016-10-22 95 views
1

我正在研究如何管理OrientDB中的模式(使用源代碼管理)。我有一個可以通過OrientDB的「bin/console.sh」運行的SQL腳本來創建類和函數。我的腳本僅適用於創建新的數據庫,因爲CREATE...語句將在第二次失敗。我希望能夠在更改後重新運行腳本。那麼,我們如何有條件地執行如CREATE CLASSCREATE PROPERTY在OrientDB中,如何編寫數據庫模式創建/更新SQL腳本?

到目前爲止,我嘗試使用IF跳過這樣的言論,但IF只允許一個script sql...end塊內,如果你試圖把任何CREATE...聲明中這樣的塊,你得到的錯誤:「不能更改架構而交易活躍。「我們唯一能夠想到的是使用set ignoreErrors true,但這遠非理想,因爲錯誤仍然存​​在,所以很難區分預期錯誤和實際問題。

如果我提出了錯誤的問題(意思是說,除了SQL腳本之外,還有一種更好的方式來管理模式的源代碼控制),請告訴我。

+2

您可以嘗試使用Java API進行管理。請參閱:http://orientdb.com/docs/last/Schema.html –

+1

我通常有2個文件。第一個包含整個模式(所以你從頭開始安裝系統時運行它)。而第二個我用來運行部分更新(例如更改類的屬性或索引它) – AVK

回答

0

在OrientDB v2.2.13中,有一個新的「IF EXISTS」子句,可讓您用相同的腳本優雅地創建或更新數據庫。這是創建和刪除報表的組成部分:

CREATE CLASS <class> [IF NOT EXISTS] ...; 
CREATE PROPERTY <class>.<property> [IF NOT EXISTS] ...; 
DROP CLASS <class> [IF EXISTS]; 
DROP PROPERTY <class>.<property> [IF EXISTS]; 

此功能可以在official documentation找到。

相關問題