Thuta Learning
ရှာဖွေရန်
BasicData & Databasesbeginner

CRUD နှင့် RETURNING

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • CRUD နှင့် RETURNING concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • နမူနာ SQL/command ကို ကိုယ်တိုင် run ပြီး output စစ်နိုင်ရန်
  • Tutorial Platform project နှင့် production scenario တွင် အသုံးချနိုင်ရန်

နားလည်ထားရမယ့် အချက်

CRUD က create/read/update/delete operations ကိုဆိုလိုပါတယ်။ PostgreSQL ရဲ့ `RETURNING` clause က insert/update/delete ပြီးသည့် row ကို နောက်ထပ် SELECT မလုပ်ဘဲ ပြန်ပေးနိုင်ပါတယ်။ UPDATE သို့ DELETE မှာ `WHERE` မပါရင် table တစ်ခုလုံးပြောင်းသွားနိုင်လို့ transaction နဲ့ row count ကိုစစ်သောအလေ့အကျင့်လိုပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

User နှစ်ယောက်ထည့်ပြီး တစ်ယောက်၏ display name ကိုပြင်မယ်။ Identity key ကို application ကခန့်မှန်းမည့်အစား `RETURNING user_id` ဖြင့်ရယူပါ။ Delete လုပ်ခင် SELECT နဲ့ filter ကိုစစ်ပြီး soft-delete လို requirement ရှိမရှိလည်း စဉ်းစားရပါတယ်။

အတူတူ စမ်းရေးကြည့်မယ်

sql
INSERT INTO app.users (email, display_name)
VALUES
  ('a@example.com', 'Aye Aye'),
  ('b@example.com', 'Bo Bo')
RETURNING user_id, email;

UPDATE app.users
SET display_name = 'Aye Thiri'
WHERE email = 'a@example.com'
RETURNING *;

DELETE FROM app.users
WHERE email = 'b@example.com'
RETURNING user_id;
You should see
Insert/update/delete တစ်ခုစီက သက်ရောက်သော row ကိုပြန်ပေးမည်။

၅ မိနစ် စမ်းကြည့်

Tutorial row သုံးခုထည့်ပြီး unpublished row တစ်ခုကို publish လုပ်ကာ `published_at = now()` သတ်မှတ်ပါ။

သတိလေးတစ်ချက်

UPDATE/DELETE ကို WHERE မပါဘဲ run မိခြင်းက အများဆုံးဖြစ်သော data incident တစ်ခုပါ။ Production မှာ transaction နဲ့ backup မရှိဘဲ မစမ်းပါနှင့်။

PostgreSQL — Data ManipulationPostgreSQL Global Development Group

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • UPDATE/DELETE ကို WHERE မပါဘဲ run မိခြင်းက အများဆုံးဖြစ်သော data incident တစ်ခုပါ။ Production မှာ transaction နဲ့ backup မရှိဘဲ မစမ်းပါနှင့်။
  • နမူနာ code ကို production data ပေါ် တိုက်ရိုက်မစမ်းဘဲ local/test database နှင့် recoverable backup ပေါ်တွင် အရင်အတည်ပြုပါ။

လေ့ကျင့်ခန်း

Tutorial row သုံးခုထည့်ပြီး unpublished row တစ်ခုကို publish လုပ်ကာ `published_at = now()` သတ်မှတ်ပါ။

You'll know it worked when: Insert/update/delete တစ်ခုစီက သက်ရောက်သော row ကိုပြန်ပေးမည်။

CRUD နှင့် RETURNING | Thuta Learning