Identity Primary Keys on Ecto
Ecto, allow the type :identity
to be used since 3.5 which is cool:
create table(:user, primary_key: false) do
add :id, :identity, primary_key: true
add :name, :string, null: false
timestamps()
end
That generates this SQL:
CREATE TABLE public.users (
id bigint NOT NULL,
name character varying(255) NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
ALTER TABLE public.users ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
SEQUENCE NAME public.users_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1
);
The only issue is that there's no option to change from BY DEFAULT
to ALWAYS
😕