MySQL alter 语句

复制代码
ALTER TABLE `user`
ADD COLUMN `cdkey` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'CD-Key',
ADD COLUMN `erp_userid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'ERP用户ID',
ADD UNIQUE INDEX `uniq_cdkey_erp_userid`(`cdkey`, `erp_userid`) USING BTREE;

当前表:

CREATE TABLE `user` (

`id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',

`username` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名',

`password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码',

`nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '昵称',

`mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '手机号码',

`email` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '邮箱',

`header` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '头像',

`gender` tinyint(4) UNSIGNED NULL DEFAULT 0 COMMENT '性别, 0男, 1女',

`status` tinyint(4) UNSIGNED NULL DEFAULT 0 COMMENT '启用状态:0正常,1锁定。',

`social_uid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '社交用户在社交软件的id',

`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',

`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

`level` tinyint(4) UNSIGNED NULL DEFAULT 1 COMMENT '用户等级。 0:管理员, 1:普通用户, 2:vip用户, 3:游客',

PRIMARY KEY (`id`) USING BTREE,

UNIQUE INDEX `uniq_mobile`(`mobile`) USING BTREE,

UNIQUE INDEX `uniq_username`(`username`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '会员' ROW_FORMAT = Dynamic;

如果当前表中已存在数据,并且你添加了cdkeyerp_userid字段后,默认情况下这两个字段的值会是NULL。在这种情况下,将这两个字段合起来创建唯一索引不会立即引发任何冲突,因为NULL值在唯一索引中被视为不相同(即,多个NULL值在唯一索引中是允许的)。因此,即使多行的cdkeyerp_userid都是NULL,它们也不会违反新增的联合唯一索引规则。

但是,需要注意的是,一旦开始为这些字段插入非NULL值,就必须确保每一对(cdkey, erp_userid)的组合是唯一的,否则将会违反唯一索引约束,导致插入或更新操作失败。

相关推荐
爱隐身的官人13 分钟前
爬虫基础学习-爬取网页项目(二)
前端·爬虫·python·学习
Jackson@ML43 分钟前
使用字节旗下的TREA IDE快速开发Web应用程序
前端·ide·trea
花小璇学linux2 小时前
imx6ull-驱动开发篇42——Linux I2C 驱动框架简介
linux·驱动开发·嵌入式软件
凌肖战2 小时前
编写Linux下设备驱动时两种方案:内核态驱动开发和用户态驱动开发
linux·驱动开发
计算机学姐3 小时前
基于SpringBoot的社团管理系统【2026最新】
java·vue.js·spring boot·后端·mysql·spring·mybatis
天上掉下来个程小白3 小时前
微服务-25.网关登录校验-网关传递用户到微服务
java·数据库·微服务
烛阴3 小时前
解锁 TypeScript 的元编程魔法:从 `extends` 到 `infer` 的条件类型之旅
前端·javascript·typescript
前端开发爱好者4 小时前
弃用 ESLint + Prettier!快 35 倍的 AI 格式化神器!
前端·javascript·vue.js
vivi_and_qiao4 小时前
HTML的form表单
java·前端·html
Slaughter信仰4 小时前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第四章知识点问答补充及重新排版
java·开发语言·jvm