/** * leader_id를 nullable로 변경 * 관리자가 TBM을 입력할 때 leader_id를 NULL로 설정하고 created_by를 사용 */ exports.up = async function(knex) { // 1. 외래 키 제약조건 삭제 (존재하는 경우에만) try { await knex.raw('ALTER TABLE tbm_sessions DROP FOREIGN KEY tbm_sessions_leader_id_foreign'); } catch (err) { console.log('외래 키가 이미 존재하지 않음 (정상)'); } // 2. leader_id를 nullable로 변경 (UNSIGNED 제거하여 workers.worker_id와 타입 일치) await knex.raw('ALTER TABLE tbm_sessions MODIFY leader_id INT(11) NULL'); // 3. 외래 키 제약조건 다시 추가 (nullable 허용) await knex.raw('ALTER TABLE tbm_sessions ADD CONSTRAINT tbm_sessions_leader_id_foreign FOREIGN KEY (leader_id) REFERENCES workers(worker_id) ON DELETE SET NULL'); }; exports.down = async function(knex) { // 1. 외래 키 제약조건 삭제 await knex.raw('ALTER TABLE tbm_sessions DROP FOREIGN KEY tbm_sessions_leader_id_foreign'); // 2. leader_id를 NOT NULL로 되돌림 await knex.raw('ALTER TABLE tbm_sessions MODIFY leader_id INT(11) NOT NULL'); // 3. 외래 키 제약조건 다시 추가 await knex.raw('ALTER TABLE tbm_sessions ADD CONSTRAINT tbm_sessions_leader_id_foreign FOREIGN KEY (leader_id) REFERENCES workers(worker_id) ON DELETE CASCADE'); };