From 90e32ec683d506daa97aff855fd1cb12c9391471 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Tue, 12 May 2026 16:45:53 +0800 Subject: [PATCH] fix(grid): skip null columns in INSERT so database defaults apply When cloning or adding a row, null columns (e.g. auto-increment PKs) were explicitly inserted as NULL, violating NOT NULL constraints. Omit them so the database DEFAULT (sequence, now(), etc.) kicks in. --- src/lib/dataGridSql.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/dataGridSql.ts b/src/lib/dataGridSql.ts index 0274826be..8e1a0841d 100644 --- a/src/lib/dataGridSql.ts +++ b/src/lib/dataGridSql.ts @@ -94,7 +94,9 @@ export function buildDataGridSaveStatements(options: DataGridSaveStatementOption for (const row of options.newRows) { const insertPairs = options.columns .map((column, index) => ({ column, value: row[index] })) - .filter((pair) => !isOracleRowId(options.databaseType, pair.column)); + .filter((pair) => !isOracleRowId(options.databaseType, pair.column)) + .filter((pair) => pair.value !== null && pair.value !== undefined); + if (!insertPairs.length) continue; const columns = insertPairs.map((pair) => quoteIdent(options.databaseType, pair.column)).join(", "); const values = insertPairs.map((pair) => formatGridSqlLiteral(pair.value, options.databaseType)).join(", "); statements.push(`INSERT INTO ${table} (${columns}) VALUES (${values});`);