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)的组合是唯一的,否则将会违反唯一索引约束,导致插入或更新操作失败。

相关推荐
孟祥_成都1 小时前
【全网最通俗!新手到AI全栈开发必读】 AI 是如何进化到大模型的
前端·人工智能·全栈
Seven971 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
牛奶1 小时前
AI辅助开发的基础概念
前端·人工智能·ai编程
摸鱼的春哥1 小时前
Agent教程15:认识LangChain,Agent框架的王(上)
前端·javascript·后端
明月_清风2 小时前
自定义右键菜单:在项目里实现“选中文字即刻生成新提示”
前端·javascript
明月_清风2 小时前
告别后端转换:高质量批量导出实战
前端·javascript
刘发财7 小时前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶9 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶9 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
皮皮林55110 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java