Hi Experts,
I'm facing an issue while updating a table. Below's the log (Namespace & tablename masked):
05/02/2019 11:33:32 AM QUE-370007 Unable to find key values for element 'TABLE_NAME' (document with schema 'TABLE_NAME')
05/02/2019 11:33:32 AM XSV-350023 Unable to save document of type 'NAMESPACE_:TABLE_NAME'.
05/02/2019 11:33:32 AM SOP-330011 Error while executing the method 'Write' of service 'xtk:persist|xtk:session'.
Key is based on 4 columns & I've verified that, data exits on all those columns & they're unique when put together.
Below is the key declaration xml:
<element label="TABLE_NAME" name="TABLE_NAME">
<key internal="true" name="PrimaryKey">
<keyfield xpath="@COL1"/>
<keyfield xpath="@COL2"/>
<keyfield xpath="@COL3"/>
<keyfield xpath="@COL4"/>
</key>
Below is the update statement:
xtk.session.Write(
<TABLE_NAME
xtkschema="NAMESPACE_:TABLE_NAME" _operation="update" _key="@COL1,@COL2,@COL3,@COL4"
<<columns that required update>>
/>);
Pls. let e know. TIA
Hi,
in the doc (Elements and attributes : <key> element) it explicitly says :
"A key is known as composite if it includes several fields (i.e. several <keyfield> children). Do not use a composite key to define a primary key."
I would recommand using the autopk="true" and a creating a unique index constraint for the fields you wanted as a composite primary key :
<dbindex name="myIndex" label="My index on my 4 fields" unique="true">
<keyfield xpath="@COL1"/>
<keyfield xpath="@COL2"/>
<keyfield xpath="@COL3"/>
<keyfield xpath="@COL4"/>
</dbindex>
Kind regards,
Pierre
What i observed in ACM was that if we created any custom PK (single/composite),
it actually creates an Unique index on the columns.
But having autopk="true" will add another column to the table & if it's a huge table, we're going consume extra space for it.
I was able to solve this by modifying the JS update code.
Thanks for the reply
Views
Replies
Total Likes
Can you help us with solution. I am facing same issue.
Views
Replies
Total Likes
Hello,
I tried the below code, it worked.
var jsonData = {"col1" : "a", "col2" : "b", "col3" : "c", "col4" : "d", "col5" : "e"}
var xml = <TABLE_NAME xtkschema="NAMESPACE_:TABLE_NAME" _operation="insertOrUpdate" _key="@Col1,@COL2,@COL3,@COL4" @Col1 ={jsonData.col1} @COL2 ={jsonData.col2} @COL3 ={jsonData.col3} @COL4 ={jsonData.col4} @COL5 ={jsonData.col5}/>;
xtk.session.Write(xml);
Views
Replies
Total Likes
Views
Likes
Replies