我正在使用PostgreSQL。 e_id是主键,我想将数据类型从char(5)更改为整数。
Column | Type | Modifiers
-----------+-----------------------+-----------
e_id | character(5) | not null
Column | Type | Modifiers
-----------------+--------------+-----------
employee_e_id | character(5) | not null
product_prod_nr | character(5) | not null
hours | numeric | not null
Indexes:
"works_on_pkey" PRIMARY KEY, btree (employee_e_id, product_prod_nr, hours)
Foreign-key constraints:
"works_on_employee_e_id_fkey" FOREIGN KEY (employee_e_id) REFERENCES employee(e_id)
数据库中的一个表已经依赖于该主键。 有办法吗?
答案 0 :(得分:0)
您可以做这些事情。我希望两个表中的所有当前记录都与Integer类型兼容。
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;