| 123456789101112131415161718192021222324252627282930313233 |
- -- 기존 제약조건 삭제
- DROP INDEX IF EXISTS unique_active_partnership ON VENDOR_INFLUENCER_PARTNERSHIP;
- -- 파트너십 테이블 재설계
- ALTER TABLE VENDOR_INFLUENCER_PARTNERSHIP
- ADD COLUMN PARTNERSHIP_CYCLE INT NOT NULL DEFAULT 1 COMMENT '파트너십 사이클 (1: 최초, 2: 첫 재승인, 3: 두번째 재승인 ...)',
- ADD COLUMN PREVIOUS_STATUS VARCHAR(20) NULL COMMENT '이전 상태 (재승인시 사용)',
- ADD COLUMN PREVIOUS_END_DATE DATETIME NULL COMMENT '이전 종료일 (재승인시 사용)';
- -- 새로운 복합 유니크 키 추가 (벤더-인플루언서-사이클 별로 활성 파트너십은 하나만 존재)
- ALTER TABLE VENDOR_INFLUENCER_PARTNERSHIP
- ADD CONSTRAINT unique_partnership_cycle
- UNIQUE KEY (VENDOR_SEQ, INFLUENCER_SEQ, PARTNERSHIP_CYCLE, IS_ACTIVE);
- -- 상태 체크 제약조건 추가
- ALTER TABLE VENDOR_INFLUENCER_PARTNERSHIP
- ADD CONSTRAINT chk_status_values
- CHECK (STATUS IN ('PENDING', 'APPROVED', 'REJECTED', 'TERMINATED'));
- -- 활성 상태 체크 제약조건 추가
- ALTER TABLE VENDOR_INFLUENCER_PARTNERSHIP
- ADD CONSTRAINT chk_status_active
- CHECK ((STATUS = 'TERMINATED' AND IS_ACTIVE = 'N') OR
- (STATUS IN ('PENDING', 'APPROVED', 'REJECTED') AND IS_ACTIVE IN ('Y', 'N')));
- -- 파트너십 사이클 체크 제약조건 추가
- ALTER TABLE VENDOR_INFLUENCER_PARTNERSHIP
- ADD CONSTRAINT chk_partnership_cycle
- CHECK (PARTNERSHIP_CYCLE > 0);
- -- 인덱스 추가
- CREATE INDEX idx_vendor_influencer_status ON VENDOR_INFLUENCER_PARTNERSHIP(VENDOR_SEQ, INFLUENCER_SEQ, STATUS, IS_ACTIVE);
- CREATE INDEX idx_partnership_cycle ON VENDOR_INFLUENCER_PARTNERSHIP(PARTNERSHIP_CYCLE);
|