alter table public.profiles add constraint valid_name_length check ( LENGTH(name) >= 1 AND LENGTH(name) <= 30 ) このように記述すると、 public.profiles テーブルに対して valid_name_length という制約の名前をつけて、「1文字以上、30文字以下」の値のみ name カラムに登録できるという制約ができます。 この制約があることで、この条件に合致しない INSERT / UPDATE が来た場合には、例外が発生してDB操作が中断されるようになります。つまり、データベースが値を検証して可否判定をし、判定結果に応じてDB処理が完了することになります。 正規表現を関数化してCHECK制約をかける。 色々触ってみた結果、関数化した方が便利そうでした。 そのまま
![Supabase + Next.js でバリデーションはどうやるの?](https://cdn-ak-scissors.b.st-hatena.com/image/square/5a25388014901513b83a035f8b0f3020ca8115f1/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--4PxSENAy--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ASupabase%252520%25252B%252520Next.js%252520%2525E3%252581%2525A7%2525E3%252583%252590%2525E3%252583%2525AA%2525E3%252583%252587%2525E3%252583%2525BC%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%2525B3%2525E3%252581%2525AF%2525E3%252581%2525A9%2525E3%252581%252586%2525E3%252582%252584%2525E3%252582%25258B%2525E3%252581%2525AE%2525EF%2525BC%25259F%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Amasa5714%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzNlMzBjZjA3NzguanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)