Appearance
StarRocks PRIMARY KEY 列无法直接 UPDATE
StarRocks Primary Key 模型中,主键列是行的唯一标识,引擎不允许直接 UPDATE 主键列,执行会报错:
SQL Error [1064] [42000]: primary key column cannot be updated: <列名>方案一:DELETE + INSERT(推荐)
先用 SELECT 查出目标行、修改主键列的值后重新 INSERT,StarRocks 会按主键做 upsert 覆盖;再 DELETE 掉旧值的行。
sql
-- 1. 插入修改后的新行(upsert 覆盖)
INSERT INTO <表名>
SELECT
<非主键列1>,
<非主键列2>,
'新值' AS <主键列>, -- 只改这一列
<其他列...>
FROM <表名>
WHERE <主键列> = '旧值';
-- 2. 删除旧值的行
DELETE FROM <表名>
WHERE <主键列> = '旧值';注意:两步之间短暂存在新旧数据并存,有并发读场景需评估影响。数据量大时可按分区分批执行,或改用 INSERT OVERWRITE PARTITION 整分区重写。