Navicat 不提供服务端函数共享功能,仅能通过代码段+协同合作实现SQL模板库;内置函数(如DATE_ADD)不可同步,可共享的仅为手写DDL/SQL片段模板,且须保存至共享项目并勾选“保存到项目”,成员需手动刷新才能获取,权限与冲突管理需严格约定。

Navicat 本身不提供跨团队、服务端托管的“函数代码库”功能,所谓“团队通用的常用函数代码库”,实际只能靠 代码段(Snippets) + Navicat 协同合作(Navicat Cloud Collaboration) 组合实现——但必须清楚:内置函数(如 DATE_ADD()、CONCAT())无法被共享或同步,能共享的只是你手写的 SQL 片段模板。
为什么不能直接共享数据库函数?
因为 Navicat 不管理数据库服务端的函数定义(如 MySQL 的 CREATE FUNCTION),它只负责连接、查询和本地开发辅助。你写的 DELIMITER $$ ... END $$ 脚本属于 DDL 操作,执行后才真正在数据库里创建函数;而这类脚本本身,才是可被当作“代码段”保存和共享的对象。
常见误解是以为把 IFNULL() 或 TO_CHAR() 加进代码段就能让队友自动获得函数支持——不会。它们只是字符串模板,是否可用,完全取决于目标数据库是否原生支持该函数。
怎样用代码段 + 协同合作搭建团队 SQL 模板库?
前提是你的团队已开通并使用 Navicat 协同合作(需 Premium 非 Essentials 版本,且账户启用云协作)。
- 所有成员必须登录同一
Navicat Cloud账户体系,项目需设为共享项目(非个人私有) - 代码段本身不自动同步——你得把自定义代码段保存到该共享项目的
代码段目录下(不是本地磁盘路径) - 新建代码段时,在
新建片段对话框中,确保勾选了保存到项目(而非“仅当前用户”) - 团队成员打开同一项目后,需手动点击代码段窗格右上角的刷新按钮(或重启 Navicat),才能看到新增片段
示例:一个通用分页查询模板(适配 MySQL)
SELECT * FROM <table_name> LIMIT <offset>, <limit>;
其中 <table_name>、<offset>、<limit> 是占位符,插入后按 TAB 键可跳转编辑。
哪些内容适合放进团队代码段库?
优先放那些重复高、易出错、有规范约束的 SQL 模板,而不是单个函数名:
-
INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE(防重写入) - 带
EXPLAIN FORMAT=TREE的查询分析包装模板 - PostgreSQL 的
INSERT ... RETURNING id标准返回写法 - 跨库 JOIN 查询骨架(含
db1.table1别名约定) - 注释规范模板:
-- @author <name> | @since <date> | @desc <brief>
避免放入含硬编码值、敏感字段名、或强依赖某版本语法的片段(比如 MySQL 8.0+ 的 JSON_TABLE() 放进去,MySQL 5.7 用户一用就报错)。
容易被忽略的权限与同步细节
Navicat 协同合作 中,代码段的可见性由项目角色决定:
-
客人角色默认无法看到或使用任何代码段(即使片段已存在) -
成员可查看和插入,但不能编辑或删除他人创建的代码段 - 只有
管理员或所有者能在代码段库中右键选择编辑或删除 - 修改已有代码段后,不会自动推送到队友端——他们下次打开项目时才会拉取最新版,且无变更提示
真正麻烦的是冲突:两人同时编辑同一个代码段并保存,后保存者会覆盖前者,且无合并机制或历史版本回溯。所以建议对核心模板加命名前缀,如 [stable]_pagination_mysql,并靠文档约定更新流程。


















