2016-06-11 47 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。