設定値を1行だけ設置したい案件があったため備忘録として書きます
チェック制約でOneRowIdを1のみに制限する事で解消しました
CREATE TABLE public.settings (
one_row_id integer NOT NULL,
CONSTRAINT "CK_settings_one_row_id_Range" CHECK (one_row_id = 1)
);
ALTER TABLE ONLY public.settings
ADD CONSTRAINT pk_settings PRIMARY KEY (one_row_id);
ALTER TABLE public.settings ALTER COLUMN one_row_id ADD GENERATED BY DEFAULT AS IDENTITY (
SEQUENCE NAME public.settings_one_row_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1
);
EF Coreを使っていれば以下のようにすると幸せになります
[Key]
[JsonIgnore]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Range(1, 1)]
public int OneRowId { set; get; } = 1;
OneRowIdはFEに送りたくないのでJsonIgnore
します
DatabaseGenerated(DatabaseGeneratedOption.Identity)
でDB側に生成してもらいます
良い良い方法があればコメントお願いします