自增字段怎么设置初始值?

Viewed 23

自增字段怎么设置初始值?例如1001,1002这种

1 Answers

1.首先将字段设置为自增,并且给自增的字段设置默认值,如下图

image.png

2.修改模板,使其支持设置自增的默认值,如下图

image.png

image.png

具体完整的模板如下:

{{
    let schemaName = it.schemaName ? `${it.schemaName}.` : '';
    const tableKey = `${schemaName}${it.defKey}`;
    let autoIncrementDefaultValue = "";

    function getDataType(field) {
        const { dbDataType } = field;
        if(!dbDataType) {
            return '';
        }
        const dataType = dbDataType.toUpperCase();
        if (['VARCHAR','NVARCHAR','VARBINARY'].includes(dataType)) {
            return `${dataType}(${field.dataLen ? field.dataLen : 128})`;
        } else if (['DATE','YEAR','TINYTEXT','MEDIUMTEXT','LONGTEXT','TINYBLOB','MEDIUMBLOB','LONGBLOB','BOOLEAN','FLOAT','JSON'].includes(dataType)) {
            return dataType;
        } else if(['SET','ENUM'].includes(dataType)){
            return `${dataType}(${field.defaultValue})`;
        } else if (dataType === 'TIMESTAMP') {
            return field.dataLen && field.dataLen >= 0 && field.dataLen <= 6 ? `${dataType}(${field.dataLen})` : dataType;
        } else if (dataType === 'DOUBLE') {
           return field.dataLen && field.dataLen >= 0 && field.dataLen <= 255 ? (field.numScale && field.numScale >= 0 && field.numScale <= field.dataLen ? `${dataType}(${field.dataLen},${field.numScale})`  : `${dataType}(${field.dataLen},0)`) : `${dataType}`;
        } else if (dataType === 'DECIMAL') {
            return field.dataLen && field.dataLen >= 0 && field.dataLen <= 65 ? (field.numScale && field.numScale >= 0 && field.numScale <= field.dataLen ? `${dataType}(${field.dataLen},${field.numScale})`  : `${dataType}(${field.dataLen})`) : `${dataType}`;
        } else {
            return field.dataLen && field.dataLen >= 0 ? `${dataType}(${field.dataLen})` : `${dataType}`;
        }
    }

    function getFieldDefinition(field, index, fields) {
        const dataType = getDataType(field);
        const notNull = field.notNull ? ' NOT NULL' : '';
        const autoIncrement = field.autoIncrement ? ' AUTO_INCREMENT' : '';
        let defaultValue = field.defaultValue ? ` DEFAULT ${field.defaultValue}` : '';
        if(field?.dbDataType?.toUpperCase() === 'SET' || field?.dbDataType?.toUpperCase() ==='ENUM'){
            defaultValue = field.defaultValue ? ` DEFAULT ("${field.defaultValue}")` : '';
        } else if(autoIncrement) {
            autoIncrementDefaultValue = `AUTO_INCREMENT = ${field.defaultValue}`;
            defaultValue = "";
        }
        const comment = ` COMMENT '${it.func.strJoin(field.defName, field.intro, ";", true)}'`;
        return `${dataType}${notNull}${autoIncrement}${defaultValue}${comment}${index < fields.length - 1 || pkList.length > 0 ? ',' : ''}`;
    }
}}
DROP TABLE IF EXISTS {{= tableKey }};

CREATE TABLE {{= tableKey }}(
{{ pkList = [] ; }}
{{~it.fields:field:index}}
    {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}
    `{{=field.defKey}}` {{= getFieldDefinition(field, index, it.fields) }}
{{~}}
{{? pkList.length > 0 }}
    PRIMARY KEY ({{~pkList:pkName:i}}`{{= pkName }}`{{= i < pkList.length - 1 ? ',' : '' }}{{~}})
{{?}}
){{? (it.intro && it.intro !== '') || (it.defName && it.defName !== '') }} COMMENT '{{=it.func.strJoin(it.defName, it.intro, ";", true)}}' {{=autoIncrementDefaultValue}}{{?}};
$blankline