Hi Experts,
If I understand correctly, if we declare a key in adobe data schema, it creates an unique index with not null constraint enforced in the backend table (not exactly an Oracle primary key).
I'm trying to implement Primary-Foreign key relation in ACM. I've declared a link between the tables (code below).
However, it doesn't enforce this in backend database (parent-child validations don't take place).
Sample code below:
Scenario: Parent table (test1) & child table (test2). Sample below:
test1:
<element label="test1" name="test1">
<key internal="true" name="PKEY_t1">
<keyfield xpath="@col1"/>
</key>
<attribute label="col1" name="col1" type="long"/>
<attribute label="col2" name="col2" type="string"/>
<attribute label="col3" name="col3" type="string"/>
</element>
test2:
<element label="test2" name="test2">
<key internal="true" name="PKEY_t2">
<keyfield xpath="@col1"/>
</key>
<attribute label="col1" name="col1" type="long"/>
<attribute label="col2" name="col2" type="long"/>
<attribute label="col3" name="col3" type="string"/>
<element label="test_link" name="test_link" target="pl_:test1" type="link">
<join xpath-dst="@col1" xpath-src="@col2"/>
</element>
</element>
Please suggest.
Solved! Go to Solution.
Views
Replies
Total Likes
@Milan_VuceticHi, after i created the tables...below was what got created:
Parent - pl_:test1
<element label="test2" name="test2-test_link" revLink="test_link" target="pl_:test2"
type="link" unbound="true">
<join xpath-dst="@col2" xpath-src="@col1"/>
</element>
Child - pl_:test2
<element label="test_link" name="test_link" revLink="test2-test_link"
target="pl_:test1" type="link">
<join xpath-dst="@col1" xpath-src="@col2"/>
</element>
I believe this was 1-1 cardinality which is created by default? Even so, i was able to insert a record in child table (test2), which didn't exist in parent table(test1). hence, my doubts.
If it's possible, can you give me an example of how you'd define a link of cardinality 1-N.
Thank you
Views
Replies
Total Likes
Views
Replies
Total Likes
Hi @abhiseks1679239,
cardinality 1-N is created by default always. In order to create 1-1 relation add the following: revCardinality="single"
If you want to create ref. integrity consider this:
Regards,
Milan
Views
Replies
Total Likes
Hi,
Relationships defined in ACC are used only by ACC software, not the RDBMS software.
Thanks,
-Jon
Views
Replies
Total Likes
@Jonathon_wodnicki So you mean even if we create a link in adobe campaign, it still won't create a Primary key - Foreign key in backend database?
I'm using Oracle as backend db.
Views
Replies
Total Likes
Views
Replies
Total Likes