изменить тип данных первичного ключа - PullRequest
0 голосов
/ 14 декабря 2018

Я использую PostgreSQL.e_id - это первичный ключ, и я хочу изменить тип данных с char (5) на integer.

  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)

Одна таблица в моей базе данных уже зависит от этого первичного ключа.Есть ли способ сделать это?

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете делать эти вещи. Я надеюсь, что все ваши текущие записи в обеих таблицах совместимы с целочисленным типом.

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;

Демо

...