2つのフィールドを使用して制約を作成する方法はありますか。例えば。2つのフィールドを使用して制約を作成する方法
CREATE CONSTRAINT ON(m:BBG_Security_DATA)ASSERT m.ISIN、m.CUSIP IS UNIQUE;
上記のcypherステートメントを実行しているときに、エラーメッセージが表示されます。
おかげで、 Shafeeque
2つのフィールドを使用して制約を作成する方法はありますか。例えば。2つのフィールドを使用して制約を作成する方法
CREATE CONSTRAINT ON(m:BBG_Security_DATA)ASSERT m.ISIN、m.CUSIP IS UNIQUE;
上記のcypherステートメントを実行しているときに、エラーメッセージが表示されます。
おかげで、 Shafeeque
あなたは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'});
非常にきれいで、apocトリガをあまり見なかった。あなたがこれに違反しても警告を発するようには見えませんが、違反しているノードはただ削除されますか? – InverseFalcon
「トランザクションIDはまだ割り当てられていません。トランザクションコミット中に割り当てられます。 ' –
はい、それほど良くありませんが、問題を解決します。 –
この現在のNeo4jによってサポートされていません。ただし、この種の動作を強制するために独自の拡張機能(おそらくTransactionEventHandlerを使用)をコーディングすることができます。
この質問は尋ねたと前に何回も回答されています。たとえば、http://stackoverflow.com/questions/41862488/creating-constraint-on-multiple-properties-in-neo4j/41863964#41863964の質問2と受け入れられた回答を参照してください。 – cybersam