数据库建模工具PDManer调整建表模板(包含索引)

源起

当我们平常使用数据库sql审核平台archery时,默认的创建索引DDL语句时,创建索引要包含在建表语句中,修改索引建议使用ALTER TABLE形式进行修改,不能使用CREATE形式DDL处理索引

所以当我们在使用数据库建模工具PDManer时,官方提供的DDL模板会产生生成的语句不能直接使用

解决方案

  • 重置PDManer的DDL模板
    在这里插入图片描述
  1. 重置建表DDL模板,模板粘贴到上图位置
DROP TABLE IF EXISTS {{=it.entity.defKey}};
CREATE TABLE {{=it.entity.defKey}}(
{{ pkList = [] ; }}
{{~it.entity.fields:field:index}}
{{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}
`{{=field.defKey}}` {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}} {{= field.notNull ? 'NOT NULL' : '' }} {{= field.autoIncrement ? 'AUTO_INCREMENT' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }} COMMENT '{{=it.func.join(field.defName,field.comment,';')}}' {{= index < it.entity.fields.length-1 ? ',' : ( (pkList.length>0 || it.entity.indexes.length > 0) ? ',' :'' ) }}
{{~}}
{{? pkList.length >0 }}
PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : ''}}{{~}}){{=( it.entity.indexes.length > 0 ? ',' :'' )}}
{{?}}

{{~ it.entity.indexes:idx:index}}
{{? idx.unique}}UNIQUE {{?}}INDEX {{=idx.defKey}}({{ fieldsKeys = idx.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}}){{= index<it.entity.indexes.length-1 ? ',' : '' }}
{{~}}

) COMMENT = '{{=it.func.join(it.entity.defName,it.entity.comment,';') }}';
$blankline
  1. 删除“新建索引代码”模板

前后对比

解决前

DROP TABLE IF EXISTS SIMS_STUDENT;
CREATE TABLE SIMS_STUDENT(
    `COLLEGE_ID` VARCHAR(32) NOT NULL   COMMENT '所在学院ID' ,
    `CLASS_ID` VARCHAR(32) NOT NULL   COMMENT '所在班级ID' ,
    `STUDENT_ID` VARCHAR(32) NOT NULL   COMMENT '学生ID' ,
    PRIMARY KEY (`STUDENT_ID`)
)  COMMENT = '学生';

CREATE INDEX idx_smis_student_01 ON SIMS_STUDENT(STUDENT_NAME,ENG_NAME);
CREATE INDEX idx_smis_student_cert ON SIMS_STUDENT(ID_CARD_NO);

解决后

DROP TABLE IF EXISTS SIMS_STUDENT;
CREATE TABLE SIMS_STUDENT(
`COLLEGE_ID` VARCHAR(32) NOT NULL   COMMENT '所在学院ID' ,
`CLASS_ID` VARCHAR(32) NOT NULL   COMMENT '所在班级ID' ,
`STUDENT_ID` VARCHAR(32) NOT NULL   COMMENT '学生ID',
PRIMARY KEY (STUDENT_ID),
INDEX idx_smis_student_01(STUDENT_NAME,ENG_NAME),
INDEX idx_smis_student_cert(ID_CARD_NO)
) COMMENT = '学生';

其他

如果想对表增加索引自动生成索引时也可以对“新建索引代码”模板进行调整,可替换为ALTER TABLE形式进行修改表索引,而非CREATE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值