alter_business_cards_table.sql 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. -- ===============================================
  2. -- 修改business_cards表,新增age和native_place字段
  3. -- 执行日期: 请在执行前填写实际日期
  4. -- 修改说明: 为名片表新增年龄和籍贯字段,支持更完整的人员信息管理
  5. -- ===============================================
  6. -- 1. 新增age字段 (年龄字段)
  7. ALTER TABLE business_cards
  8. ADD COLUMN age INTEGER;
  9. -- 2. 新增native_place字段 (籍贯字段)
  10. ALTER TABLE business_cards
  11. ADD COLUMN native_place TEXT;
  12. -- 3. 为新增字段添加注释
  13. COMMENT ON COLUMN business_cards.age IS '年龄字段 - 存储人员年龄信息,取值范围1-150';
  14. COMMENT ON COLUMN business_cards.native_place IS '籍贯字段 - 存储人员籍贯或出生地信息';
  15. -- 4. 验证字段是否成功添加
  16. SELECT
  17. column_name,
  18. data_type,
  19. is_nullable,
  20. column_default
  21. FROM information_schema.columns
  22. WHERE table_name = 'business_cards'
  23. AND column_name IN ('age', 'native_place')
  24. ORDER BY column_name;
  25. -- 5. 查看字段注释
  26. SELECT
  27. a.attname AS column_name,
  28. format_type(a.atttypid, a.atttypmod) AS data_type,
  29. COALESCE(pg_catalog.col_description(a.attrelid, a.attnum), '无注释') AS description
  30. FROM
  31. pg_catalog.pg_attribute a
  32. JOIN
  33. pg_catalog.pg_class c ON a.attrelid = c.oid
  34. JOIN
  35. pg_catalog.pg_namespace n ON c.relnamespace = n.oid
  36. WHERE
  37. c.relname = 'business_cards'
  38. AND a.attname IN ('age', 'native_place')
  39. AND a.attnum > 0
  40. AND NOT a.attisdropped
  41. ORDER BY a.attname;
  42. -- ===============================================
  43. -- 执行说明:
  44. -- 1. 请在生产环境执行前先在测试环境验证
  45. -- 2. 建议在业务低峰期执行此脚本
  46. -- 3. 执行前请备份相关数据
  47. -- 4. 新增字段允许NULL值,不会影响现有数据
  48. -- ===============================================
  49. -- 可选:如果需要为现有记录设置默认值,可以执行以下语句
  50. -- UPDATE business_cards SET age = NULL WHERE age IS NULL;
  51. -- UPDATE business_cards SET native_place = '' WHERE native_place IS NULL;
  52. -- 执行完成后检查表结构
  53. \d business_cards;