010_add_auth_fields_to_users.sql 1.4 KB

12345678910111213141516171819202122232425262728293031
  1. -- 迁移文件: 010_add_auth_fields_to_users.sql
  2. -- 描述: 为用户表添加认证相关字段
  3. -- 需求: 1.1, 1.2, 1.3
  4. -- ============================================
  5. -- 正向迁移: 添加认证字段和约束
  6. -- ============================================
  7. -- 添加username字段(用户名,用于登录)
  8. ALTER TABLE aigcspace.users ADD COLUMN IF NOT EXISTS username VARCHAR(50);
  9. -- 添加password_hash字段(密码哈希)
  10. ALTER TABLE aigcspace.users ADD COLUMN IF NOT EXISTS password_hash VARCHAR(255);
  11. -- 为username添加唯一约束
  12. ALTER TABLE aigcspace.users ADD CONSTRAINT uk_users_username UNIQUE (username);
  13. -- 为email添加唯一约束(当email不为空时)
  14. CREATE UNIQUE INDEX IF NOT EXISTS idx_users_email_unique ON aigcspace.users(email) WHERE email IS NOT NULL;
  15. -- 添加字段注释
  16. COMMENT ON COLUMN aigcspace.users.username IS '用户名(唯一,用于登录)';
  17. COMMENT ON COLUMN aigcspace.users.password_hash IS '密码哈希(bcrypt加密)';
  18. -- ============================================
  19. -- 回滚迁移: 删除字段和约束
  20. -- ============================================
  21. -- DROP INDEX IF EXISTS aigcspace.idx_users_email_unique;
  22. -- ALTER TABLE aigcspace.users DROP CONSTRAINT IF EXISTS uk_users_username;
  23. -- ALTER TABLE aigcspace.users DROP COLUMN IF EXISTS password_hash;
  24. -- ALTER TABLE aigcspace.users DROP COLUMN IF EXISTS username;