2016-10-22 64 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找到。

相关问题