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

要去掉 uniq_mobileuniq_username 这两个唯一索引,你可以使用以下 SQL 语句:

-- 删除 uniq_mobile 索引
2ALTER TABLE `user`
3DROP INDEX `uniq_mobile`;
4
5-- 删除 uniq_username 索引
6ALTER TABLE `user`
7DROP INDEX `uniq_username`;
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值