005_add_user_list_additional_columns_safe.sql 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. -- DDL 005: USER_LIST 테이블에 추가 컬럼 추가 (안전 버전)
  2. -- 생성일: 2025-07-22
  3. -- 목적: 인플루언서 분류 및 관리를 위한 추가 정보 컬럼 (중복 방지)
  4. -- 1. 인플루언서 타입 컬럼 추가 (존재하지 않는 경우에만)
  5. SET @sql = IF(
  6. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  7. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'INFLUENCER_TYPE') = 0,
  8. 'ALTER TABLE `USER_LIST` ADD COLUMN `INFLUENCER_TYPE` varchar(50) DEFAULT NULL COMMENT ''인플루언서 타입: MICRO, MACRO, MEGA, CELEBRITY''',
  9. 'SELECT "INFLUENCER_TYPE column already exists" as info'
  10. );
  11. PREPARE stmt FROM @sql;
  12. EXECUTE stmt;
  13. DEALLOCATE PREPARE stmt;
  14. -- 2. 주요 카테고리 컬럼 추가 (존재하지 않는 경우에만)
  15. SET @sql = IF(
  16. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  17. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'PRIMARY_CATEGORY') = 0,
  18. 'ALTER TABLE `USER_LIST` ADD COLUMN `PRIMARY_CATEGORY` varchar(50) DEFAULT NULL COMMENT ''주요 활동 카테고리: FASHION_BEAUTY, FOOD_HEALTH, LIFESTYLE, TECH_ELECTRONICS, SPORTS_LEISURE, CULTURE_ENTERTAINMENT''',
  19. 'SELECT "PRIMARY_CATEGORY column already exists" as info'
  20. );
  21. PREPARE stmt FROM @sql;
  22. EXECUTE stmt;
  23. DEALLOCATE PREPARE stmt;
  24. -- 3. 팔로워 수 컬럼 추가 (존재하지 않는 경우에만)
  25. SET @sql = IF(
  26. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  27. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'FOLLOWER_COUNT') = 0,
  28. 'ALTER TABLE `USER_LIST` ADD COLUMN `FOLLOWER_COUNT` int(11) DEFAULT 0 COMMENT ''총 팔로워 수''',
  29. 'SELECT "FOLLOWER_COUNT column already exists" as info'
  30. );
  31. PREPARE stmt FROM @sql;
  32. EXECUTE stmt;
  33. DEALLOCATE PREPARE stmt;
  34. -- 4. 평균 조회수 컬럼 추가 (존재하지 않는 경우에만)
  35. SET @sql = IF(
  36. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  37. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'AVG_VIEWS') = 0,
  38. 'ALTER TABLE `USER_LIST` ADD COLUMN `AVG_VIEWS` int(11) DEFAULT 0 COMMENT ''평균 조회수''',
  39. 'SELECT "AVG_VIEWS column already exists" as info'
  40. );
  41. PREPARE stmt FROM @sql;
  42. EXECUTE stmt;
  43. DEALLOCATE PREPARE stmt;
  44. -- 5. 프로필 이미지 URL 컬럼 추가 (존재하지 않는 경우에만)
  45. SET @sql = IF(
  46. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  47. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'PROFILE_IMAGE') = 0,
  48. 'ALTER TABLE `USER_LIST` ADD COLUMN `PROFILE_IMAGE` varchar(500) DEFAULT NULL COMMENT ''프로필 이미지 URL''',
  49. 'SELECT "PROFILE_IMAGE column already exists" as info'
  50. );
  51. PREPARE stmt FROM @sql;
  52. EXECUTE stmt;
  53. DEALLOCATE PREPARE stmt;
  54. -- 6. 소개 컬럼 추가 (존재하지 않는 경우에만)
  55. SET @sql = IF(
  56. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  57. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'BIO') = 0,
  58. 'ALTER TABLE `USER_LIST` ADD COLUMN `BIO` text DEFAULT NULL COMMENT ''자기소개''',
  59. 'SELECT "BIO column already exists" as info'
  60. );
  61. PREPARE stmt FROM @sql;
  62. EXECUTE stmt;
  63. DEALLOCATE PREPARE stmt;
  64. -- 7. 인스타그램 링크 컬럼 추가 (존재하지 않는 경우에만)
  65. SET @sql = IF(
  66. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  67. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'INSTAGRAM_URL') = 0,
  68. 'ALTER TABLE `USER_LIST` ADD COLUMN `INSTAGRAM_URL` varchar(200) DEFAULT NULL COMMENT ''인스타그램 링크''',
  69. 'SELECT "INSTAGRAM_URL column already exists" as info'
  70. );
  71. PREPARE stmt FROM @sql;
  72. EXECUTE stmt;
  73. DEALLOCATE PREPARE stmt;
  74. -- 8. 유튜브 링크 컬럼 추가 (존재하지 않는 경우에만)
  75. SET @sql = IF(
  76. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  77. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'YOUTUBE_URL') = 0,
  78. 'ALTER TABLE `USER_LIST` ADD COLUMN `YOUTUBE_URL` varchar(200) DEFAULT NULL COMMENT ''유튜브 링크''',
  79. 'SELECT "YOUTUBE_URL column already exists" as info'
  80. );
  81. PREPARE stmt FROM @sql;
  82. EXECUTE stmt;
  83. DEALLOCATE PREPARE stmt;
  84. -- 9. 틱톡 링크 컬럼 추가 (존재하지 않는 경우에만)
  85. SET @sql = IF(
  86. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  87. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'TIKTOK_URL') = 0,
  88. 'ALTER TABLE `USER_LIST` ADD COLUMN `TIKTOK_URL` varchar(200) DEFAULT NULL COMMENT ''틱톡 링크''',
  89. 'SELECT "TIKTOK_URL column already exists" as info'
  90. );
  91. PREPARE stmt FROM @sql;
  92. EXECUTE stmt;
  93. DEALLOCATE PREPARE stmt;
  94. -- 10. 블로그 링크 컬럼 추가 (존재하지 않는 경우에만)
  95. SET @sql = IF(
  96. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  97. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'BLOG_URL') = 0,
  98. 'ALTER TABLE `USER_LIST` ADD COLUMN `BLOG_URL` varchar(200) DEFAULT NULL COMMENT ''블로그 링크''',
  99. 'SELECT "BLOG_URL column already exists" as info'
  100. );
  101. PREPARE stmt FROM @sql;
  102. EXECUTE stmt;
  103. DEALLOCATE PREPARE stmt;
  104. -- 11. 선호 지역 컬럼 추가 (존재하지 않는 경우에만)
  105. SET @sql = IF(
  106. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  107. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'PREFERRED_REGION') = 0,
  108. 'ALTER TABLE `USER_LIST` ADD COLUMN `PREFERRED_REGION` varchar(100) DEFAULT NULL COMMENT ''선호 활동 지역''',
  109. 'SELECT "PREFERRED_REGION column already exists" as info'
  110. );
  111. PREPARE stmt FROM @sql;
  112. EXECUTE stmt;
  113. DEALLOCATE PREPARE stmt;
  114. -- 12. 최소 수수료율 컬럼 추가 (존재하지 않는 경우에만)
  115. SET @sql = IF(
  116. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  117. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'MIN_COMMISSION_RATE') = 0,
  118. 'ALTER TABLE `USER_LIST` ADD COLUMN `MIN_COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT ''최소 수수료율 (%)''',
  119. 'SELECT "MIN_COMMISSION_RATE column already exists" as info'
  120. );
  121. PREPARE stmt FROM @sql;
  122. EXECUTE stmt;
  123. DEALLOCATE PREPARE stmt;
  124. -- 13. 인증 상태 컬럼 추가 (존재하지 않는 경우에만)
  125. SET @sql = IF(
  126. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  127. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'VERIFICATION_STATUS') = 0,
  128. 'ALTER TABLE `USER_LIST` ADD COLUMN `VERIFICATION_STATUS` varchar(20) DEFAULT ''UNVERIFIED'' COMMENT ''인증 상태: UNVERIFIED, PENDING, VERIFIED''',
  129. 'SELECT "VERIFICATION_STATUS column already exists" as info'
  130. );
  131. PREPARE stmt FROM @sql;
  132. EXECUTE stmt;
  133. DEALLOCATE PREPARE stmt;
  134. -- 14. 인증일 컬럼 추가 (존재하지 않는 경우에만)
  135. SET @sql = IF(
  136. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  137. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'VERIFIED_DATE') = 0,
  138. 'ALTER TABLE `USER_LIST` ADD COLUMN `VERIFIED_DATE` timestamp NULL DEFAULT NULL COMMENT ''인증일시''',
  139. 'SELECT "VERIFIED_DATE column already exists" as info'
  140. );
  141. PREPARE stmt FROM @sql;
  142. EXECUTE stmt;
  143. DEALLOCATE PREPARE stmt;
  144. -- 15. 최종 로그인 일시 컬럼 추가 (존재하지 않는 경우에만)
  145. SET @sql = IF(
  146. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  147. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'USER_LIST' AND COLUMN_NAME = 'LAST_LOGIN_DATE') = 0,
  148. 'ALTER TABLE `USER_LIST` ADD COLUMN `LAST_LOGIN_DATE` timestamp NULL DEFAULT NULL COMMENT ''최종 로그인 일시''',
  149. 'SELECT "LAST_LOGIN_DATE column already exists" as info'
  150. );
  151. PREPARE stmt FROM @sql;
  152. EXECUTE stmt;
  153. DEALLOCATE PREPARE stmt;