
# U0400011：GaussDB自动增长列必须是主键约束或唯一约束的第一个字段
#### 描述
**数据库类型与版本**
- 源库类型与版本：MySQL 5.5、5.6、5.7、8.0版本。
- 目标库类型与版本：GaussDB集中式版V2.0-3.1版本开始。
**语法示例**
GaussDB集中式版V2.0-3.1版本的B兼容模式开始支持AUTO_INCREMENT属性，因此迁移到GaussDB集中式版时，V2.0-3.1版本之前默认转换成自定义序列的形式，并将列的默认值设置成序列值，通过序列来生成列的数据，V2.0-3.1版本开始将保留AUTO_INCREMENT属性不转换。但是如果识别到自动增长列不是主键约束或唯一约束的第一个字段，将生成此错误提示。
如下示例在GaussDB集中式版V2.0-3.1及以后的版本中不支持。
```
CREATE TABLE auto_increment_test (
    id INT AUTO_INCREMENT,
    name VARCHAR(64)
);
```
#### 改造建议
如果迁移后的AUTO_INCREMENT列不是主键约束或者唯一约束的第一个字段，用户需要根据业务场景进行修改，如下是一些可能的方案：
1. 将AUTO_INCREMENT列单独定义成主键或唯一键，或者将AUTO_INCREMENT列添加到已有主键约束或者唯一约束的第一列中。此时将修改原有的数据完整性约束。
2. 注释掉AUTO_INCREMENT列，此时需要通过业务保证数据正确性。
3. 将AUTO_INCREMENT列修改成序列整型，序列整型与AUTO_INCREMENT的区别参考U0400010，更多详情请参考《GaussDB开发者指南》。
 
