CREATE TABLE public.mst_kecamatan (
    id_kecamatan serial NOT NULL,
    id_daerah integer DEFAULT 0 NOT NULL,
    id_unik_kecamatan uuid DEFAULT public.uuid_generate_v7() NOT NULL,
    id_unik_daerah uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    kode_kecamatan character varying(10) NOT NULL,
    nama_kecamatan character varying(255) DEFAULT ''::character varying NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

COMMENT ON TABLE public.mst_kecamatan IS 'Tabel referensi kecamatan di Indonesia dalam sistem SIPD. Menyimpan informasi identitas kecamatan, kode wilayah, dan hubungan dengan daerah induknya.';
COMMENT ON COLUMN public.mst_kecamatan.id_kecamatan IS 'Primary key. ID unik untuk setiap kecamatan.';
COMMENT ON COLUMN public.mst_kecamatan.id_daerah IS 'ID daerah induk (provinsi/kabupaten/kota) tempat kecamatan berada.';
COMMENT ON COLUMN public.mst_kecamatan.id_unik_kecamatan IS 'ID unik UUID untuk backup ID primary key.';
COMMENT ON COLUMN public.mst_kecamatan.id_unik_daerah IS 'ID unik UUID untuk backup ID foreign key mst_daerah.';
COMMENT ON COLUMN public.mst_kecamatan.kode_kecamatan IS 'Kode resmi kecamatan sesuai standar nasional.';
COMMENT ON COLUMN public.mst_kecamatan.nama_kecamatan IS 'Nama lengkap kecamatan sesuai nomenklatur resmi.';
COMMENT ON COLUMN public.mst_kecamatan.created_at IS 'Tanggal dan waktu data pertama kali dibuat.';
COMMENT ON COLUMN public.mst_kecamatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN public.mst_kecamatan.updated_at IS 'Tanggal dan waktu terakhir data diperbarui.';
COMMENT ON COLUMN public.mst_kecamatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN public.mst_kecamatan.deleted_at IS 'Tanggal dan waktu data dihapus (soft delete).';
COMMENT ON COLUMN public.mst_kecamatan.deleted_by IS 'ID pengguna yang menghapus data.';

ALTER TABLE public.mst_kecamatan ADD CONSTRAINT mst_kecamatan_pkey PRIMARY KEY (id_kecamatan, id_daerah, kode_kecamatan);

CREATE INDEX mst_kecamatan_id_daerah_idx ON public.mst_kecamatan USING btree (id_kecamatan);
CREATE INDEX mst_kecamatan_kode_kecamatan_idx ON public.mst_kecamatan USING btree (kode_kecamatan);