release: v0.2.1 生产加固 — WAL CRC/约束激活/Hybrid提交顺序/RESTRICT外键/浏览器兼容表/debug模式/onError回调
This commit is contained in:
@@ -295,7 +295,7 @@ export class MemoryEngine implements IStorageEngine {
|
||||
if (refTableName === tableName) continue;
|
||||
|
||||
for (const [colName, colDef] of Object.entries(refSchema.columns)) {
|
||||
if (!colDef.references || !colDef.onDelete || colDef.onDelete === 'RESTRICT') continue;
|
||||
if (!colDef.references || !colDef.onDelete) continue;
|
||||
|
||||
const [refTable, refCol] = colDef.references.split('.');
|
||||
if (refTable !== tableName) continue;
|
||||
@@ -312,6 +312,14 @@ export class MemoryEngine implements IStorageEngine {
|
||||
}
|
||||
}
|
||||
|
||||
// RESTRICT: 存在引用行时禁止删除
|
||||
if (colDef.onDelete === 'RESTRICT' && toDelete.length > 0) {
|
||||
throw new DatabaseError(
|
||||
`Cannot delete from "${tableName}": foreign key "${colName}" in "${refTableName}" has dependent rows`,
|
||||
'FOREIGN_KEY_VIOLATION',
|
||||
);
|
||||
}
|
||||
|
||||
if (colDef.onDelete === 'CASCADE') {
|
||||
// 递归级联
|
||||
for (const refPk of toDelete) {
|
||||
|
||||
Reference in New Issue
Block a user