---
description: 达梦8 DM8数据库全局强制规范，信创数据库最高优先级规则
globs: ["**/*.sql","**/*DO.java","**/*Mapper.xml"]
alwaysApply: true
---
# 达梦8（DM8）数据库规范 信创适配
## 一、达梦 8 字段类型强制约束
1. 雪花 ID 主键：Java String，达梦 `VARCHAR(20)`；**禁止 BIGINT 自增、禁止序列做主键**；
2. 状态、枚举值：Java Integer，达梦 `INT`；
3. 短文本名称：`VARCHAR(100)`，长描述 `VARCHAR(500)`；
4. 时间统一 `TIMESTAMP`；**禁止 TIMESTAMPTZ、DATE 单独存储时分秒**；
5. 布尔值使用 `BIT`，0/1；
6. JSON 数组、复杂集合存储使用 `TEXT`，配合 MyBatis-Plus JacksonTypeHandler；
7. 不使用达梦大字段 CLOB/BLOB，业务文本统一 VARCHAR/TEXT。

## 二、DDL 脚本达梦专属规范
1. 表名、字段名全部小写蛇形命名，规避达梦系统关键字；
2. 注释使用 `COMMENT ON TABLE` / `COMMENT ON COLUMN` 达梦标准语法；
3. 新增字段使用 `ALTER TABLE 表名 ADD COLUMN xxx 类型 约束 COMMENT '注释'`；
4. 建表语句包裹 `BEGIN;` 和 `COMMIT;`，事务执行；
5. 索引创建语法：`CREATE INDEX idx_xxx ON table_name(col);`；唯一索引 `CREATE UNIQUE INDEX`；
6. 达梦分页语法：`OFFSET x LIMIT y`，禁止 MySQL LIMIT 0,10 逗号写法；
7. 达梦函数替换 MySQL 函数：
   - IFNULL → NVL
   - DATE_FORMAT → TO_CHAR
   - NOW() → SYSDATE
   - SUBSTRING → SUBSTR

## 三、MyBatis-Plus 适配达梦 8
1. Mapper 继承 `BaseMapperX`（项目封装适配达梦），禁止原生 BaseMapper；
2. 分页使用 `LambdaQueryWrapperX` 空值安全条件，达梦分页自动适配；
3. 禁止 MySQL 专属 XML SQL，所有原生 SQL 必须兼容达梦；
4. 主键注解统一 `@TableId(type = IdType.ASSIGN_ID)`，达梦全局关闭自增；
5. 软删除使用 MyBatis-Plus 逻辑删除，达梦 BIT 字段自动适配。

## 四、达梦 8 信创部署约束
1. 驱动包使用达梦官方国产化驱动 DmJdbcDriver，不使用兼容 MySQL 驱动；
2. 数据库字符集统一 GB18030，适配信创中文存储；
3. 排序规则统一达梦中文排序，避免中文查询乱序；
4. 生产环境达梦 8 部署在鲲鹏 / 飞腾国产服务器，禁止 x86 海外服务器；
5. 数据库备份脚本适配达梦 dexp/dimp 工具，不使用 mysqldump；
6. 账号权限最小化，业务账号仅拥有 DML 权限，DDL 仅 DBA 可执行，满足等保信创要求。

## 五、数据库开发禁止事项
❌ 禁止使用自增主键、序列作为业务主键；
❌ 禁止 MySQL 专属函数、分页语法；
❌ 禁止字段名、表名使用达梦保留关键字不加转义；
❌ 禁止存储过程、触发器承载大量业务逻辑，业务全部下沉 Java 服务层；
❌ 禁止 TEXT/CLOB 存储超长业务文本，拆分字段；
❌ 禁止手动更新 deleted 软删除字段，使用框架内置逻辑删除方法；
❌ 禁止达梦数据库存储境外加密、境外第三方数据；
❌ 禁止创建会议、审批流程相关数据表、存储过程、触发器。
