数据库节点是coze工作流中连接外部数据源的核心组件,需掌握增删改查操作;配置时须按数据库类型填写参数,bot database需开启开关;插入支持sql或表单模式;查询需注意大小写与空结果处理;更新必须带where条件;删除仅限bot database且需主键与校验。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在扣子(Coze)工作流中,数据库节点是连接外部数据源、实现动态内容生成与持久化存储的核心组件,不掌握增删改查操作就无法让机器人真正记住用户信息或维护业务状态。
添加数据库节点并配置连接
打开工作流画布 → 点击左侧「节点」栏 → 拖拽「数据库」节点到画布空白处。
双击该节点 → 在「数据库类型」下拉菜单中选择目标数据库(如 MySQL、PostgreSQL、SQLite 或扣子内置的「Bot Database」)。
选中「Bot Database」时无需填写连接参数,但【必须确保当前 Bot 已开启「启用数据库」开关,否则后续所有写入操作都会静默失败】;若选 MySQL/PostgreSQL,则需填入 Host、Port、Database Name、Username、Password —— 密码字段支持从「密钥管理」中选取已存密钥,避免明文暴露。
向数据库插入新记录(Create)
方法一:使用 SQL 模式插入
在数据库节点中切换至「SQL 查询」模式 → 输入 INSERT 语句,例如:INSERT INTO users (name, phone) VALUES (:name, :phone)。
点击「参数映射」区域 → 将 workflow 中上游节点输出的变量(如 {{user_input.name}})拖入对应参数框,确保键名与 SQL 中的命名占位符(:name、:phone)完全一致,大小写敏感。
方法二:使用表单模式插入(仅 Bot Database 支持)
切换至「表单」模式 → 点击「选择表」→ 从下拉列表中选中已存在的表(如 users)→ 点击「+ 添加字段」→ 逐个填入字段名(name)、字段类型(text)、值来源({{user_input.name}})。
这一步不能跳过「字段类型」选择,否则写入后查询时可能因类型不匹配导致过滤失效。
查询已有数据(Read)
第一步:确定查询方式
若只需获取单条匹配记录,使用「SELECT … LIMIT 1」并勾选「返回单条结果」;若要批量读取,取消勾选并确保 SQL 返回多行结果可被下游循环处理。
扣子 (Windows) 是字节跳动推出的一站式 AI Agent 平台客户端,支持多 Agent 协作、可视化工作流和知识库管理。最新版本新增 Claude Code 与 Codex CLI 接入、多端同步和项目级管理功能,同时优化了插件生态和 AI 响应速度,让用户在 Windows 上即可高效创建、运行和协作智能体,满足个人、团队及企业场景需求。
第二步:编写带条件的查询语句
例如:SELECT * FROM orders WHERE status = :status AND created_at > :start_time → 在参数映射中绑定 {{input.status}} 和 {{sys.time_sub(7, "days")}} 这类动态表达式。
注意:Bot Database 的表名和字段名默认小写,且不支持反引号包裹,写成 `users` 或 "users" 会直接报错。
第三步:处理空结果
查询无匹配时节点输出为空对象 {},下游若直接取 {{db_result.id}} 会得到 undefined,建议先用「条件分支」节点判断 {{db_result}} 是否存在再继续逻辑。
更新已有记录(Update)
使用 SQL 模式执行 UPDATE,语法必须包含 WHERE 条件,例如:UPDATE users SET last_login = :now WHERE id = :user_id。
【漏写 WHERE 或 WHERE 条件恒为真(如 WHERE 1=1)会导致整张表数据被覆盖,且不可回滚】
参数映射中务必绑定 :user_id —— 若上游未传递该字段,可用「设置变量」节点提前构造,例如设 user_id = {{event.user.id}} 再传入。
Bot Database 不支持 UPDATE 多行批量更新,每次只能更新一条,如需批量操作需用循环节点包裹数据库节点。
删除记录(Delete)
仅推荐在 Bot Database 中使用 DELETE,且必须满足两个前提:一是表结构中存在明确主键字段(如 id),二是删除前已在上游完成人工确认或风控校验。
SQL 模式下输入:DELETE FROM logs WHERE created_at → 绑定 <code>{{sys.time_sub(30, "days")}} 作为 cutoff_time。
执行后节点输出为影响行数(number 类型),可用于判断是否真有数据被删,比如输出 0 说明没有过期日志可清理。










