Files
2026-06-20 14:26:29 +08:00

19 lines
978 B
SQL

-- AlterTable: Make package_plan_id nullable to support global AFF codes
-- Global AFF codes have package_plan_id = NULL and can be used for all paid plans
-- Step 1: Drop the existing foreign key constraint
ALTER TABLE "aff_codes" DROP CONSTRAINT IF EXISTS "aff_codes_package_plan_id_fkey";
-- Step 2: Alter column to be nullable
ALTER TABLE "aff_codes" ALTER COLUMN "package_plan_id" DROP NOT NULL;
-- Step 3: Re-add foreign key with ON DELETE CASCADE (allows NULL values)
ALTER TABLE "aff_codes" ADD CONSTRAINT "aff_codes_package_plan_id_fkey"
FOREIGN KEY ("package_plan_id") REFERENCES "package_plans"("id")
ON DELETE CASCADE ON UPDATE CASCADE;
-- Note: The unique constraint on (user_id, package_plan_id) remains
-- In PostgreSQL, NULL values are not considered equal for unique constraints,
-- so multiple rows with (same_user_id, NULL) would be allowed by the database.
-- The application layer uses transactions to prevent duplicate global codes per user.