OrientDB不会删除属性

时间:2019-08-05 15:12:44

标签: orientdb

我无法从类中删除属性。该错误表明该属性在类中找不到。但是财产肯定在那里。

a busy cat

我尝试使用命令'DROP PROPERTY VResearchInstitution.turnover'以及OrientDB studio中的属性删除该属性。

我想从该类中删除该属性,并将其与其他数据类型一起从STRING添加到EMBEDDEDLIST。我知道应该有一种方法来更改属性和修改类型,但是我也无法做到这一点,这就是为什么我试图将其删除并重新添加。

2 个答案:

答案 0 :(得分:0)

我注意到只有设置了SuperClass的Node / Vertex具有此行为。如果有人有更好的答案,请告诉我。

答案 1 :(得分:0)

您可能在其他地方犯了一个小错误,例如错字。

考虑以下代码,该代码可以正确运行(您可以尝试一下):

/* Let's create a class TEST that has V as superclass */
CREATE CLASS TEST EXTENDS V
/* Let's create a class EXAMPLE that has TEST as superclass */
CREATE CLASS EXAMPLE EXTENDS TEST
/* Let's create a property */
CREATE PROPERTY EXAMPLE.Name STRING
/* Now let's delete the property */
DROP PROPERTY EXAMPLE.Name
/* EXAMPLE.name has been deleted successfully */

/* Now let's try altering the property */
CREATE PROPERTY EXAMPLE.Name STRING
ALTER PROPERTY EXAMPLE.Name MANDATORY TRUE
/* EXAMPLE.name has been altered successfully */

这按预期工作。删除属性时,请注意以下事项:

  • OrientDB区分大小写!在上面的示例中,DROP PROPERTY EXAMPLE.name会给出错误,因此请确保您的查询中不包含任何错字。
  • 删除属性不会删除数据。请考虑以下内容:
/* Let's add a vertex */
CREATE VERTEX EXAMPLE SET Name = 'a'

/* Now let's try deleting the property */
DROP PROPERTY EXAMPLE.Name

/* Now let's query the vertex */
SELECT FROM EXAMPLE WHERE Name = 'a'

结果仍将包含属性Name = 'a',因为删除类的属性只会更改该类的schema,但是自OrientDB's classes are schema-less起,将保留您的数据。

希望可以帮助您找到错误。