更改主键数据类型
change primary key data type
我正在使用 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)
我的数据库中的一个 table 已经依赖于该主键。
有办法吗?
你可以这样做things.I希望你在两个表中的所有现有记录都与整数类型兼容。
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;
我正在使用 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)
我的数据库中的一个 table 已经依赖于该主键。 有办法吗?
你可以这样做things.I希望你在两个表中的所有现有记录都与整数类型兼容。
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;