2016-06-11 43 views
0

我试图在ORIENTDB版本2.1.14与SQLorientdb与SQL语法重命名列

有一个“USER”顶点像

+------+------+-----+ 
| cc | name | cod | 
+------+------+-----+ 
| 0001 | jhon | 123 | 
+------+------+-----+ 
| 0002 | paul | 567 | 
+------+------+-----+ 

我想改变

重命名列名
+------+------+----------+ 
| cc | name | tax_code | 
+------+------+----------+ 
| 0001 | jhon | 123 | 
+------+------+----------+ 
| 0002 | paul | 567 | 
+------+------+----------+ 

(列名“cod”更改为“tax_code”且内容不变)

正在寻找http://orientdb.com/docs/2.0/orientdb.wiki/SQL.html 出现一些sql代码,但没有与列名称一起工作。

在orientdb中的sql中有一些过程用来更改列名?或者至少有一些“sp_RENAME”等效命令?

回答

0

试试这个:

alter property <class-name>.cod name tax_code 

希望它可以帮助

问候。

+0

我做的: '改变属性user.cod名tax_code' 和orientdb说: 'com.orientechnologies.orient.core.exception.OCommandExecutionException:房产 'user.cod' 不exists' ** :(** – el3ctron

+0

出现此异常是因为user.cod属性不再存在,并且已替换为tax_code。 –

0

ALTER PROPERTY是这样做的正确方法,但有一些问题。首先,当你重新命名一个属性时,它并不会真正移除旧属性,它只会将值复制到新属性中。如果你有下面的类/数据像你说的

CREATE CLASS USER; 
CREATE PROPERTY USER.cc Integer; 
CREATE PROPERTY USER.name String; 
CREATE PROPERTY USER.cod Integer; 

INSERT INTO USER SET cc=0001, name="john", cod=123; 
INSERT INTO USER SET cc=0002, name="paul", cod=567; 

的数据将是这样的:

+------+------+-----+ 
| cc | name | cod | 
+------+------+-----+ 
| 0001 | jhon | 123 | 
+------+------+-----+ 
| 0002 | paul | 567 | 
+------+------+-----+ 

然后你改变属性:

ALTER PROPERTY USER.cod NAME tax_code; 

现在我们有:

+------+------+-----+----------+ 
| cc | name | cod | tax_code | 
+------+------+-----+----------+ 
| 0001 | jhon | 123 | 123 | 
+------+------+-----+----------+ 
| 0002 | paul | 567 | 567 | 
+------+------+-----+----------+ 

此时USER类不再具有cod proeprty,但有些记录可以。然后我们可以从类中删除旧值:

UPDATE USER REMOVE cod; 

最后我们得到你想要的。

+------+------+----------+ 
| cc | name | tax_code | 
+------+------+----------+ 
| 0001 | jhon | 123 | 
+------+------+----------+ 
| 0002 | paul | 567 | 
+------+------+----------+ 

希望这会有所帮助。如果您仍然遇到问题,可以发布一些能够重现问题的SQL。