


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
Sign in to like this content
Total Likes
Can you help us with solution. I am facing same issue.
Views
Replies
Sign in to like this content
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
Sign in to like this content
Total Likes