By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
create table employee ( e_id character(5) PRIMARY KEY);
INSERT INTO employee(e_id) VALUES (1),(2),(3) ;
CREATE TABLE
INSERT 0 3
create table works_on
(
employee_e_id character(5) not null,
product_prod_nr character(5) not null,
hours numeric not null,
CONSTRAINT "works_on_pkey" PRIMARY KEY(employee_e_id, product_prod_nr, hours),
CONSTRAINT "works_on_employee_e_id_fkey" FOREIGN KEY (employee_e_id) REFERENCES employee(e_id)
);
CREATE TABLE
BEGIN;
ALTER TABLE works_on DROP CONSTRAINT works_on_employee_e_id_fkey;
ALTER TABLE works_on ALTER COLUMN employee_e_id TYPE INTEGER USING employee_e_id::INTEGER;
ALTER TABLE employee ALTER COLUMN e_id TYPE INTEGER USING e_id::INTEGER;
ALTER TABLE works_on ADD CONSTRAINT works_on_employee_e_id_fkey FOREIGN KEY (employee_e_id) REFERENCES employee(e_id);
END;
BEGIN
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
COMMIT