Expand my Community achievements bar.

SOLVED

Auto-increment custom primary key

Avatar

Level 1

I have a requirement to create a schema with a custom primary key with auto-increment functionality.

I have created  the below schema.

<element autopk="false" desc="Terms and Conditions Table" label="Terms And Conditions"

           labelSingular="Terms And Conditions" name="terms_conditions" pkSequence="auto_custerms_conditions_sequence">

    <attribute autoIncrement="true" label="Terms Key" name="terms_key" type="long"/>

    <attribute label="Terms" name="terms" type="string"/>

    <attribute label="Terms Start Date" name="terms_start_date" type="datetime"/>

    <key internal="true" name="terms_key">

      <keyfield xpath="@terms_key"/>

    </key>

  </element>

Note that I have specified autoIncrement="true" in terms_key attribute definition.

But after inserting records, the "terms_key" is not getting auto-incremented.  Is defining schema with autopk=true and leveraging campaign generated id field is the only option?

Thanks

Bharath

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi,

Set the col to autoincrement per your rdbms. E.g. for postgres to alter your existing col, run this sql script (Administration/Configuration/SQL scripts), changing namespace to your table's namespace:

create sequence auto_custerms_conditions_sequence;

alter table namespaceterms_conditions alter iterms_key set default nextval('auto_custerms_conditions_sequence');

You should also remove superfluous pksequence and autopk attribs from the element node, and move key to the top per convention.

Thanks,

-Jon

View solution in original post

2 Replies

Avatar

Correct answer by
Community Advisor

Hi,

Set the col to autoincrement per your rdbms. E.g. for postgres to alter your existing col, run this sql script (Administration/Configuration/SQL scripts), changing namespace to your table's namespace:

create sequence auto_custerms_conditions_sequence;

alter table namespaceterms_conditions alter iterms_key set default nextval('auto_custerms_conditions_sequence');

You should also remove superfluous pksequence and autopk attribs from the element node, and move key to the top per convention.

Thanks,

-Jon

Avatar

Level 1

Thanks for your quick response. That worked.

The other workaround I tried is to delete the entire schema and recreate it. That also worked. Looks like autoIncrement=true only works if we add it while creating the scheme.

- Bharath