我正在研究如何在OrientDB中管理模式(使用源代码控制)。我有一个工作的SQL脚本,可以通过OrientDB的“bin / console.sh”运行来创建类和函数。我的脚本仅适用于创建新数据库,因为CREATE...
语句将第二次失败。我希望能够在进行更改时重新运行脚本。那么,我们如何有条件地执行CREATE CLASS
或CREATE PROPERTY
?
到目前为止,我尝试使用IF
来跳过此类语句,但IF
仅允许在script sql...end
块中,并且如果您尝试放置任何CREATE...
语句在这样的块中,您会收到错误:“在事务处于活动状态时无法更改架构。”我们唯一能够想到的就是使用set ignoreErrors true
,但这远非理想,因为错误仍然会被抛出,因此很难将预期错误与实际问题区分开来。
如果我提出错误的问题(意思是除了SQL脚本之外还有一种更好的方法来管理架构的源代码控制),请告诉我。
答案 0 :(得分:0)
在OrientDB v2.2.13中,有一个新的“IF EXISTS”子句,它允许您使用相同的脚本正常创建或更新数据库。它是CREATE和DROP语句的一部分:
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。
中找到