နားလည်ထားရမယ့် အချက်
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 ရှိမရှိလည်း စဉ်းစားရပါတယ်။
အတူတူ စမ်းရေးကြည့်မယ်
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;Insert/update/delete တစ်ခုစီက သက်ရောက်သော row ကိုပြန်ပေးမည်။၅ မိနစ် စမ်းကြည့်
Tutorial row သုံးခုထည့်ပြီး unpublished row တစ်ခုကို publish လုပ်ကာ `published_at = now()` သတ်မှတ်ပါ။
သတိလေးတစ်ချက်
UPDATE/DELETE ကို WHERE မပါဘဲ run မိခြင်းက အများဆုံးဖြစ်သော data incident တစ်ခုပါ။ Production မှာ transaction နဲ့ backup မရှိဘဲ မစမ်းပါနှင့်။
PostgreSQL — Data Manipulation — PostgreSQL Global Development Group