diff --git a/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue b/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue index 5f9841f219..c414c8c888 100644 --- a/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue +++ b/packages/nc-gui/components/project/spreadsheet/components/expandedForm.vue @@ -413,6 +413,9 @@ export default { await this.reload() } else if (Object.keys(updatedObj).length) { + if (!id) { + return this.$toast.info('Update not allowed for table which doesn\'t have primary Key').goAway(3000) + } await this.api.update(id, updatedObj, this.oldRow) } else { return this.$toast.info('No columns to update').goAway(3000) diff --git a/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue b/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue index c2b4b811cc..1b9d6a01d2 100644 --- a/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue +++ b/packages/nc-gui/components/project/spreadsheet/rowsXcDataTable.vue @@ -62,7 +62,15 @@ - + + + Update & Delete not allowed since the table doesn't have any primary key + + @@ -208,6 +216,7 @@ :meta="meta" :is-virtual="selectedView.type === 'vtable'" :api="api" + :is-pk-avail="isPkAvail" @onNewColCreation="onNewColCreation" @onCellValueChange="onCellValueChange" @insertNewRow="insertNewRow" @@ -631,8 +640,8 @@ export default { if ( !this.meta || ( (this.meta.hasMany && this.meta.hasMany.length) || - (this.meta.manyToMany && this.meta.manyToMany.length) || - (this.meta.belongsTo && this.meta.belongsTo.length)) + (this.meta.manyToMany && this.meta.manyToMany.length) || + (this.meta.belongsTo && this.meta.belongsTo.length)) ) { return this.$toast.info('Please delete relations before deleting table.').goAway(3000) } @@ -817,6 +826,10 @@ export default { const id = this.meta.columns.filter(c => c.pk).map(c => rowObj[c._cn]).join('___') + if (!id) { + return this.$toast.info('Update not allowed for table which doesn\'t have primary Key').goAway(3000) + } + const newData = await this.api.update(id, { [column._cn]: rowObj[column._cn] }, { [column._cn]: oldRow[column._cn] }) @@ -841,6 +854,11 @@ export default { const rowObj = this.rowContextMenu.row if (!this.rowContextMenu.rowMeta.new) { const id = this.meta && this.meta.columns && this.meta.columns.filter(c => c.pk).map(c => rowObj[c._cn]).join('___') + + if (!id) { + return this.$toast.info('Delete not allowed for table which doesn\'t have primary Key').goAway(3000) + } + await this.api.delete(id) } this.data.splice(this.rowContextMenu.index, 1) @@ -859,6 +877,11 @@ export default { } if (!rowMeta.new) { const id = this.meta.columns.filter(c => c.pk).map(c => rowObj[c._cn]).join('___') + + if (!id) { + return this.$toast.info('Delete not allowed for table which doesn\'t have primary Key').goAway(3000) + } + await this.api.delete(id) } this.data.splice(row, 1) @@ -991,6 +1014,9 @@ export default { } }, computed: { + isPkAvail() { + return this.meta && this.meta.columns.some(c => c.pk) + }, isGallery() { return this.selectedView && this.selectedView.show_as === 'gallery' }, diff --git a/packages/nc-gui/components/project/spreadsheet/views/xcGridView.vue b/packages/nc-gui/components/project/spreadsheet/views/xcGridView.vue index 5497d055dc..c198784c62 100644 --- a/packages/nc-gui/components/project/spreadsheet/views/xcGridView.vue +++ b/packages/nc-gui/components/project/spreadsheet/views/xcGridView.vue @@ -27,7 +27,7 @@ @xcresized="resizingCol = null" > +--> @@ -162,7 +162,8 @@ - +