[英]OrientDB unique index on properties of two connected vertices
我有兩個頂點類V1和V2,都具有屬性'id'。 我有一個邊緣班,E。
V1的id屬性是唯一索引,因此所有V1都有唯一的ID。 現在,我希望連接到某個V1實例的所有V2實例都具有唯一的ID。 所以:
還行(需要工作)
V1(id:"A") ---- E ----> V2(id:"a")
V1(id:"A") ---- E ----> V2(id:"b")
V1(id:"B") ---- E ----> V2(id:"a")
V1(id:"B") ---- E ----> V2(id:"b")
不好
V1(id:"A") ---- E ----> V2(id:"a")
V1(id:"A") ---- E ----> V2(id:"a")
優選地,作為補充,V2實例也可能沒有邊緣存在,因此它們在全局范圍內應該是唯一的。 如果最后一部分是不可能的,那么第一部分還是有幫助的。
是否可以通過數據庫配置/索引(在邊緣或頂點上)來實現,還是必須在應用程序中強制執行?
UPDATE
配置/索引的意思是,如果您嘗試添加邊緣,就可以避免(例外)(就像使用唯一索引強制兩個頂點之間僅存在一條邊緣時一樣)。
您可以使用
update e set out=(select from v1 where id="a"), in=(select from v2 where id="a") upsert where out=(select from v1 where id="a") and in=(select from v2 where id="a")
希望能幫助到你。
我只看到兩種方法來做到這一點:
id
屬性放在邊緣並稱為v2id
,因此您可以針對out
+ v2id
創建唯一索引 onBeforeCreate()
)上創建一個鈎子(觸發)並進行檢查
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.