如何使用两个字段创建约束

时间:2017-02-03 05:08:17

标签: neo4j

如何使用两个字段创建约束。例如。

CREATE CONSTRAINT ON(m:BBG_Security_DATA)ASSERT m.ISIN,m.CUSIP IS UNIQUE;

当我执行上面的cypher语句时,它会给出一条错误消息。

谢谢, Shafeeque

2 个答案:

答案 0 :(得分:1)

您可以使用APOC的triggers

CREATE INDEX ON :BBG_Security_DATA (ISIN);

CREATE INDEX ON :BBG_Security_DATA (CUSIP);

CALL apoc.trigger.add(':BBG_Security_DATA (ISIN,CUSIP) IS UNIQUE', '
    UNWIND {createdNodes} AS n 
    WITH n 
         WHERE ALL(l in ["BBG_Security_DATA"] WHERE l in LABELS(n)) AND 
               ALL(k in ["ISIN", "CUSIP"] WHERE k in keys(n))
    MATCH (t:BBG_Security_DATA) 
          WHERE t<>n AND
                ALL(k in ["ISIN", "CUSIP"] WHERE t[k] = n[k])
    DETACH DELETE n
', {phase:'before'});

答案 1 :(得分:0)

目前Neo4j不支持此功能。但是,您可以编写自己的扩展程序(可能使用TransactionEventHandler)来强制执行此类行为。