fix(migration): 为所有 CREATE INDEX 语句添加 IF NOT EXISTS
为 5 个 RBAC 表的所有 18 个索引语句添加 IF NOT EXISTS,使迁移脚本具有幂等性: - tb_account: 6 个索引(包括 2 个唯一索引) - tb_role: 2 个索引 - tb_permission: 4 个索引(包括 1 个唯一索引) - tb_account_role: 4 个索引(包括 1 个唯一索引) - tb_role_permission: 4 个索引(包括 1 个唯一索引) 这样即使表和索引已经存在(如通过 GORM AutoMigrate 创建), 迁移脚本也能成功执行,COMMENT 语句可以正常应用。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -21,12 +21,12 @@ CREATE TABLE IF NOT EXISTS tb_account (
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- T015: tb_account 索引
|
-- T015: tb_account 索引
|
||||||
CREATE UNIQUE INDEX idx_account_username ON tb_account(username) WHERE deleted_at IS NULL;
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_account_username ON tb_account(username) WHERE deleted_at IS NULL;
|
||||||
CREATE UNIQUE INDEX idx_account_phone ON tb_account(phone) WHERE deleted_at IS NULL;
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_account_phone ON tb_account(phone) WHERE deleted_at IS NULL;
|
||||||
CREATE INDEX idx_account_user_type ON tb_account(user_type);
|
CREATE INDEX IF NOT EXISTS idx_account_user_type ON tb_account(user_type);
|
||||||
CREATE INDEX idx_account_shop_id ON tb_account(shop_id);
|
CREATE INDEX IF NOT EXISTS idx_account_shop_id ON tb_account(shop_id);
|
||||||
CREATE INDEX idx_account_parent_id ON tb_account(parent_id);
|
CREATE INDEX IF NOT EXISTS idx_account_parent_id ON tb_account(parent_id);
|
||||||
CREATE INDEX idx_account_deleted_at ON tb_account(deleted_at);
|
CREATE INDEX IF NOT EXISTS idx_account_deleted_at ON tb_account(deleted_at);
|
||||||
|
|
||||||
-- tb_account 表和字段注释
|
-- tb_account 表和字段注释
|
||||||
COMMENT ON TABLE tb_account IS '账号表:存储系统用户账号信息,支持层级关系和软删除';
|
COMMENT ON TABLE tb_account IS '账号表:存储系统用户账号信息,支持层级关系和软删除';
|
||||||
@@ -61,8 +61,8 @@ CREATE TABLE IF NOT EXISTS tb_role (
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- T017: tb_role 索引
|
-- T017: tb_role 索引
|
||||||
CREATE INDEX idx_role_role_type ON tb_role(role_type);
|
CREATE INDEX IF NOT EXISTS idx_role_role_type ON tb_role(role_type);
|
||||||
CREATE INDEX idx_role_deleted_at ON tb_role(deleted_at);
|
CREATE INDEX IF NOT EXISTS idx_role_deleted_at ON tb_role(deleted_at);
|
||||||
|
|
||||||
-- tb_role 表和字段注释
|
-- tb_role 表和字段注释
|
||||||
COMMENT ON TABLE tb_role IS '角色表:定义系统角色,支持软删除';
|
COMMENT ON TABLE tb_role IS '角色表:定义系统角色,支持软删除';
|
||||||
@@ -97,10 +97,10 @@ CREATE TABLE IF NOT EXISTS tb_permission (
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- T019: tb_permission 索引
|
-- T019: tb_permission 索引
|
||||||
CREATE UNIQUE INDEX idx_permission_code ON tb_permission(perm_code) WHERE deleted_at IS NULL;
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_permission_code ON tb_permission(perm_code) WHERE deleted_at IS NULL;
|
||||||
CREATE INDEX idx_permission_type ON tb_permission(perm_type);
|
CREATE INDEX IF NOT EXISTS idx_permission_type ON tb_permission(perm_type);
|
||||||
CREATE INDEX idx_permission_parent_id ON tb_permission(parent_id);
|
CREATE INDEX IF NOT EXISTS idx_permission_parent_id ON tb_permission(parent_id);
|
||||||
CREATE INDEX idx_permission_deleted_at ON tb_permission(deleted_at);
|
CREATE INDEX IF NOT EXISTS idx_permission_deleted_at ON tb_permission(deleted_at);
|
||||||
|
|
||||||
-- tb_permission 表和字段注释
|
-- tb_permission 表和字段注释
|
||||||
COMMENT ON TABLE tb_permission IS '权限表:定义系统权限(菜单和按钮),支持层级结构和软删除';
|
COMMENT ON TABLE tb_permission IS '权限表:定义系统权限(菜单和按钮),支持层级结构和软删除';
|
||||||
@@ -134,10 +134,10 @@ CREATE TABLE IF NOT EXISTS tb_account_role (
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- T021: tb_account_role 索引
|
-- T021: tb_account_role 索引
|
||||||
CREATE INDEX idx_account_role_account_id ON tb_account_role(account_id);
|
CREATE INDEX IF NOT EXISTS idx_account_role_account_id ON tb_account_role(account_id);
|
||||||
CREATE INDEX idx_account_role_role_id ON tb_account_role(role_id);
|
CREATE INDEX IF NOT EXISTS idx_account_role_role_id ON tb_account_role(role_id);
|
||||||
CREATE INDEX idx_account_role_deleted_at ON tb_account_role(deleted_at);
|
CREATE INDEX IF NOT EXISTS idx_account_role_deleted_at ON tb_account_role(deleted_at);
|
||||||
CREATE UNIQUE INDEX idx_account_role_unique ON tb_account_role(account_id, role_id) WHERE deleted_at IS NULL;
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_account_role_unique ON tb_account_role(account_id, role_id) WHERE deleted_at IS NULL;
|
||||||
|
|
||||||
-- tb_account_role 表和字段注释
|
-- tb_account_role 表和字段注释
|
||||||
COMMENT ON TABLE tb_account_role IS '账号-角色关联表:实现账号和角色的多对多关系,支持软删除';
|
COMMENT ON TABLE tb_account_role IS '账号-角色关联表:实现账号和角色的多对多关系,支持软删除';
|
||||||
@@ -167,10 +167,10 @@ CREATE TABLE IF NOT EXISTS tb_role_permission (
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- T023: tb_role_permission 索引
|
-- T023: tb_role_permission 索引
|
||||||
CREATE INDEX idx_role_permission_role_id ON tb_role_permission(role_id);
|
CREATE INDEX IF NOT EXISTS idx_role_permission_role_id ON tb_role_permission(role_id);
|
||||||
CREATE INDEX idx_role_permission_perm_id ON tb_role_permission(perm_id);
|
CREATE INDEX IF NOT EXISTS idx_role_permission_perm_id ON tb_role_permission(perm_id);
|
||||||
CREATE INDEX idx_role_permission_deleted_at ON tb_role_permission(deleted_at);
|
CREATE INDEX IF NOT EXISTS idx_role_permission_deleted_at ON tb_role_permission(deleted_at);
|
||||||
CREATE UNIQUE INDEX idx_role_permission_unique ON tb_role_permission(role_id, perm_id) WHERE deleted_at IS NULL;
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_role_permission_unique ON tb_role_permission(role_id, perm_id) WHERE deleted_at IS NULL;
|
||||||
|
|
||||||
-- tb_role_permission 表和字段注释
|
-- tb_role_permission 表和字段注释
|
||||||
COMMENT ON TABLE tb_role_permission IS '角色-权限关联表:实现角色和权限的多对多关系,支持软删除';
|
COMMENT ON TABLE tb_role_permission IS '角色-权限关联表:实现角色和权限的多对多关系,支持软删除';
|
||||||
|
|||||||
Reference in New Issue
Block a user