-- auto-generated definition
create table invite_codes
(
id int auto_increment
primary key,
code varchar(6) not null comment '邀请码,6位整数,确保在有效期内唯一',
invitor int null comment '邀请人的ID,对应admin表中的id字段,表示生成该邀请码的管理员或用户',
invite_level tinyint null comment '邀请层级,对应admin表中level字段的值,表示邀请人的层级',
generated_date datetime default CURRENT_TIMESTAMP not null comment '生成时间,默认为当前时间',
expire_time datetime null comment '失效时间,可为空',
remark text null comment '备注信息,可为空',
status enum ('effective', 'expired', 'bound') default 'effective' not null comment '邀请码状态,默认为 "effective"',
bound_phone varchar(20) null comment '绑定的手机号,对应admin表中的phone字段,表示与邀请码关联的管理员或用户的手机号',
weixin_nickname varchar(255) null comment '微信用户的昵称,对应user表中的nickname字段,表示与邀请码关联的用户的微信昵称',
weixin_headimg varchar(255) null comment '微信用户的头像URL,对应user表中的avatar字段,表示与邀请码关联的用户的微信头像URL',
bound_wx_uid varchar(255) null comment '微信用户的唯一标识符,对应user表中的weChatUnionId字段,表示与邀请码关联的用户的微信唯一标识符',
admin_id int null comment '管理员ID,关联admin表,可为空',
user_id int null comment '用户ID,关联user表,表示与邀请码关联的用户',
is_locked tinyint(1) default 0 not null comment '是否锁定,0表示未锁定,1表示已锁定,默认为0',
created_date timestamp default CURRENT_TIMESTAMP not null comment '记录创建的时间戳,默认为当前时间',
last_modified_date timestamp null on update CURRENT_TIMESTAMP comment '记录最后更新的时间戳,默认为NULL,更新时自动设置为当前时间',
constraint code
unique (code),
constraint invite_codes_ibfk_1
foreign key (admin_id) references productqualification.admin (id),
constraint invite_codes_ibfk_2
foreign key (invitor) references productqualification.admin (id),
constraint invite_codes_ibfk_3
foreign key (user_id) references productqualification.user (id)
)
collate = utf8mb4_unicode_ci;
create index admin_id
on invite_codes (admin_id);
create index invitor
on invite_codes (invitor);
create index user_id
on invite_codes (user_id);
好的,我将为你提供修改 invite_codes
表中 code
字段名为 invite_code
的 SQL 语句。同时,我也会确保这个修改语句考虑到可能存在的约束和索引。
修改字段名的 SQL 语句:
ALTER TABLE invite_codes
CHANGE COLUMN code invite_code VARCHAR(6) NOT NULL COMMENT '邀请码,6位整数,确保在有效期内唯一';
SQL 语句解析:
ALTER TABLE invite_codes
: 指定要修改的表为invite_codes
。CHANGE COLUMN code invite_code
: 将名为code
的列修改为invite_code
。VARCHAR(6) NOT NULL
: 指定新的列的类型为VARCHAR(6)
,且不允许为空,保持和原有定义一致。COMMENT '邀请码,6位整数,确保在有效期内唯一'
: 保持原有的注释信息。
同时修改索引和约束名称:
为了避免混淆和确保数据一致性,我们还需要修改 code
字段的索引和唯一约束名称。
-- 删除原有索引 (如果存在)
ALTER TABLE invite_codes DROP INDEX code;
-- 添加新的唯一索引
ALTER TABLE invite_codes
ADD CONSTRAINT unique_invite_code UNIQUE (invite_code);
SQL 语句解析:
ALTER TABLE invite_codes DROP INDEX code;
: 删除原先名为code
的唯一索引,如果不存在则会自动跳过。ALTER TABLE invite_codes ADD CONSTRAINT unique_invite_code UNIQUE (invite_code);
: 创建名为unique_invite_code
的唯一约束,确保invite_code
字段的唯一性。
完整修改语句:
将以上三条 SQL 语句合并,形成一个完整的修改语句:
ALTER TABLE invite_codes
CHANGE COLUMN code invite_code VARCHAR(6) NOT NULL COMMENT '邀请码,6位整数,确保在有效期内唯一';
ALTER TABLE invite_codes
DROP INDEX code;
ALTER TABLE invite_codes
ADD CONSTRAINT unique_invite_code UNIQUE (invite_code);
执行顺序:
请按照顺序执行以上 SQL 语句。
重要提示:
- 备份数据: 在执行任何数据库修改操作之前,请务必备份你的数据。
- 测试: 修改完成后,请务必测试你的应用程序,确保功能正常。
通过执行这些 SQL 语句,你就能将 invite_codes
表中的 code
字段名修改为 invite_code
,并且确保了索引和约束的名称也进行了更新。