S02054
错误代码
S02054
报错信息
Can't modify read only table. RefId: S02054
错误原因
当删除、更新或插入只读表的数据时,会出现该报错,见下例:
def createMyTable(n) {
intv = take(1..10, n)
symbol = take(`a`b`c, n)
id = rand(100, n)
strv = take("abs" + string(1..10), n)
doublev = rand(10.0, n)
return table(intv, strv, doublev, id, symbol)
}
// 建表
n = 100
t = createMyTable(n)
// 共享表, 设置为只读
share(t, `shareReadOnlyTable, readonly=true)
delete from shareReadOnlyTable where id = 1 // 报错
// 共享表,可写
share(t, `shareTable, readonly=false)
delete from shareTable where id = 1 // 正常
// 拷贝
share(t, `shareReadOnlyTable, readonly=true)
copyT = select * from shareReadOnlyTable;
delete from copyT where id = 1 // 正常
解决办法
- 在创建表的时候设为可写,即将 readonly 设置为 false。
- 如果不想修改原表的可读属性且表数据较少,可以通过 select 语句拷贝一份表数据,再对拷贝后的内存表进行操作。