idempotent-sql-design
Idempotent SQL Design
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 18
- Forks
- 6
01 前言 Front Matter
- name
- idempotent-sql-design
- metadata
- { "original-index": 4, "short-description": "Idempotent SQL Design" }
- description
- Idempotent SQL Design
02 资源文件 1
- 参考文档skill.json141 B
03 SKILL.md 正文
Idempotent SQL Design
What
Scripts that check the current state before acting, so they can be safely re-run without causing errors or duplicate changes. Running the script once or ten times produces the same final state.
Why
Deployments fail. Networks drop. Operators re-run scripts "just to be sure." An idempotent script handles all of these gracefully -- it skips work that's already done and only applies what's missing.
How
Column renames
-- Check before acting
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'Applicant'
AND column_name = 'SpeialtyRequirement' -- old name
) THEN
ALTER TABLE public."Applicant"
RENAME COLUMN "SpeialtyRequirement" TO "SpecialtyRequirement";
RAISE NOTICE 'Renamed: SpeialtyRequirement -> SpecialtyRequirement';
ELSE
RAISE NOTICE 'Skipped: SpeialtyRequirement (already renamed)';
END IF;
Index creation
-- Only create if missing
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'public'
AND indexname = 'ix_my_index'
) THEN
CREATE INDEX ix_my_index ON public."MyTable" ("MyColumn");
END IF;
FK constraints
-- Only add if missing
IF NOT EXISTS (
SELECT 1 FROM information_schema.table_constraints
WHERE constraint_name = 'fk_my_constraint'
) THEN
ALTER TABLE public."MyTable"
ADD CONSTRAINT fk_my_constraint
FOREIGN KEY ("MyColumn") REFERENCES public."OtherTable"("Id");
END IF;
Key Principle
The pattern is always:
- Query current state (does the old column exist? does the index exist?)
- Act only if needed (IF EXISTS / IF NOT EXISTS)
- Report what happened (RAISE NOTICE with [OK] or [--] prefix)
When to Use
- Every DDL script. Always.
- Especially critical for scripts deployed to multiple environments where some may already have partial changes applied
Where We Used It
- ****: Column renames + procedure updates (check old/new state first)
- /: FK constraint creation (check constraint existence)
- /: Index creation (check index existence)
*Category: Reliability | Origin: *
04 同仓库更多 Skills
yeet
Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).
wrangler
Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
workspace-skill-discovery
Discover and include ALL skills across the workspace — not just global ones. Use at the start of every session or when the user asks about available skills. Ensures project-level skills (under .claude/skills/ or skills/ in any repo) are never missed.
workers-best-practices
Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
winui-app
Create, build and design WinUI 3 desktop apps with C# and the Windows App SDK following Microsoft's official guidance and CommunityToolkit. Covers XAML, navigation, theming, accessibility and deployment.
windows-brain-script-portability
Scripts in ~/.claude/scripts/ that run on a Windows brain: use the python3.cmd shim and not bare python3, and reconfigure stdout to UTF-8 if you print symbols. Use it when writing a brain script or triaging a Windows-only crash.