Skip to Content
0
Jun 10, 2021 at 02:28 PM

Using Commit while Creating Multiple Records in CAP

262 Views Last edit Jun 10, 2021 at 02:38 PM 3 rev

Hello All,

I have 5 records for creation so I am sending from UI to CAP using Promise.all().

    @BeforeCreate()
    public async validateHeaderBeforeCreate(@Req() oRequest: any): Promise<void> {
        let oTransaction: any = cds.transaction(oRequest);
//Need to increment partner_counter field
        let oPartnerQuery = SELECT.from("namespace_contract")
            .columns('max(partner_counter) as partner_counter');
        let aContractPartners = await oTransaction
            .run(oPartnerQuery);
        oRequest.data.partner_counter = Number (aContractPartners[0]?.partner_counter ? aContractPartners[0]?.partner_counter : 0) + 1;
    }
    @AfterCreate()
    public async afterCreatePartner(@Req() oRequest: any): Promise<void> {
        let oTransaction: any = cds.transaction(oRequest);
        await oTransaction.commit();
    }

I am using PostgreSQL Database.

Here partner_counter is key field for me.

While I am inserting 5 records. commit() is not working. 2 records inserted properly when inserting 3 record I am getting following error. Please correct me if I am using commit() in wrong way.

commit-issue.png

Attachments

commit-issue.png (16.5 kB)