≫ 更新文档

REPLACE

REPLACE 的工作方式类似于 INSERT,但它会在插入新文档之前,将具有相同 ID 的前一个文档标记为已删除。

如果您想进行原地更新,请参阅 本节

SQL REPLACE

SQL REPLACE 语句的语法如下:

替换整个文档:

REPLACE INTO table [(column1, column2, ...)]
    VALUES (value1, value2, ...)
    [, (...)]

未在 SQL 语句中明确包括的列将被设置为其默认值,如 0 或空字符串,具体取决于它们的数据类型。

仅替换选定字段:

REPLACE INTO table
    SET field1=value1[, ..., fieldN=valueN]
    WHERE id = <id>

注意,此模式下只能通过 id 进行过滤。

注意:部分替换需要 Manticore Buddy。如果无法使用,请确保 Buddy 已安装。

从 SELECT 替换:

REPLACE INTO table
    SELECT ... FROM source
REPLACE INTO table (column1, column2, column3)
    SELECT ... FROM source

注意:此语法需要 Manticore Buddy。如果不起作用,请确保已安装 Buddy。

更多关于 UPDATE 与部分 REPLACE 的内容,请参见 这里

详细信息请参见示例。

JSON REPLACE

  • /replace

    POST /replace
    {
      "table": "<table name>",
      "id": <document id>,
      "doc":
      {
        "<field1>": <value1>,
        ...
        "<fieldN>": <valueN>
      }
    }

    /index 是同义端点,功能相同。

  • 类似 Elasticsearch 的端点 <table>/_doc/<id>

    PUT/POST /<table name>/_doc/<id>
    {
      "<field1>": <value1>,
      ...
      "<fieldN>": <valueN>
    }

    注意:类似 Elasticsearch 的替换需要 Manticore Buddy。如果无法使用,请确保 Buddy 已安装。

  • 部分替换:

    POST /<{table | cluster:table}>/_update/<id>
    {
      "<field1>": <value1>,
      ...
      "<fieldN>": <valueN>
    }

    <table name> 可以仅是表名,也可以采用 cluster:table 格式。如果需要,可以跨特定集群进行更新。

    注意:部分替换需要 Manticore Buddy。如果无法使用,请确保 Buddy 已安装。

详细信息请参见示例。

‹›
  • SQL
  • REPLACE SET
  • REPLACE ... SELECT
  • JSON
  • Elasticsearch-like
  • Elasticsearch-like partial
  • Elasticsearch-like partial in cluster
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • TypeScript
  • Go
📋
REPLACE INTO products VALUES(1, "document one", 10);
‹›
Response
Query OK, 1 row affected (0.00 sec)

REPLACE 适用于实时表和感知表。不能替换普通表中的数据。

执行 REPLACE 时,前一个文档不会被移除,但会被标记为已删除,因此表的大小会增长,直到发生块合并。若要强制块合并,请使用 OPTIMIZE 语句

批量替换

您可以一次替换多个文档。更多信息请参考 批量添加文档

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • TypeScript
  • Go
📋
REPLACE INTO products(id,title,tag) VALUES (1, 'doc one', 10), (2,' doc two', 20);
‹›
Response
Query OK, 2 rows affected (0.00 sec)
Last modified: January 16, 2026