diff --git a/backend/services/planting-service/prisma/migrations/20241225100000_add_contract_no/migration.sql b/backend/services/planting-service/prisma/migrations/20241225100000_add_contract_no/migration.sql index b466a10b..a44c0d58 100644 --- a/backend/services/planting-service/prisma/migrations/20241225100000_add_contract_no/migration.sql +++ b/backend/services/planting-service/prisma/migrations/20241225100000_add_contract_no/migration.sql @@ -1,16 +1,44 @@ -- AlterTable: Add contract_no column to contract_signing_tasks -- 合同编号格式: accountSequence-yyyyMMddHHmm (例如: 10001-202512251003) --- 1. 首先添加可空的 contract_no 列 -ALTER TABLE "contract_signing_tasks" ADD COLUMN "contract_no" VARCHAR(30); +-- 1. 首先添加可空的 contract_no 列(如果不存在) +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'contract_signing_tasks' + AND column_name = 'contract_no' + ) THEN + ALTER TABLE "contract_signing_tasks" ADD COLUMN "contract_no" VARCHAR(30); + END IF; +END $$; -- 2. 为现有记录生成合同编号(基于 account_sequence 和 created_at) UPDATE "contract_signing_tasks" SET "contract_no" = "account_sequence" || '-' || TO_CHAR("created_at", 'YYYYMMDDHH24MI') WHERE "contract_no" IS NULL; --- 3. 设置为 NOT NULL -ALTER TABLE "contract_signing_tasks" ALTER COLUMN "contract_no" SET NOT NULL; +-- 3. 设置为 NOT NULL(如果还不是) +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'contract_signing_tasks' + AND column_name = 'contract_no' + AND is_nullable = 'YES' + ) THEN + ALTER TABLE "contract_signing_tasks" ALTER COLUMN "contract_no" SET NOT NULL; + END IF; +END $$; --- 4. 添加唯一索引 -CREATE UNIQUE INDEX "contract_signing_tasks_contract_no_key" ON "contract_signing_tasks"("contract_no"); +-- 4. 添加唯一索引(如果不存在) +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_indexes + WHERE tablename = 'contract_signing_tasks' + AND indexname = 'contract_signing_tasks_contract_no_key' + ) THEN + CREATE UNIQUE INDEX "contract_signing_tasks_contract_no_key" ON "contract_signing_tasks"("contract_no"); + END IF; +END $$;