-- 기존 제약조건 삭제 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);