From 9720b237e7f88c362824f72e36e1ce94c9f0b874 Mon Sep 17 00:00:00 2001 From: allenjiang Date: Sun, 27 Oct 2024 13:02:16 +0800 Subject: [PATCH] feat: add check note in database --- database/06-check.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 database/06-check.md diff --git a/database/06-check.md b/database/06-check.md new file mode 100644 index 0000000..ff9c77c --- /dev/null +++ b/database/06-check.md @@ -0,0 +1,17 @@ +# Check + +在 PostgreSQL 中,可以使用 `CHECK` 來避免某些錯誤的資料被寫入。 + +以多階段留言系統為例,留言的 `parent_id` 不應該等於自己的 `id` (即自己的父留言不應該是留言自己本身)。我們可以在 PostgreSQL 中使用 `CHECK` 來確認這個規則。 + +```sql +ALTER TABLE comments +ADD CONSTRAINT parent_id_cannot_be_its_own_id CHECK (comments.id <> comments.parent_id); +``` + +如果想移除這個 `CONSTRAINT`,可以使用 `DROP` 來移除這個規則。 + +```sql +ALTER TABLE comments +DROP CONSTRAINT parent_id_cannot_be_its_own_id; +```