Модифицировать суррогатный ключ в таблице с естественным ключом в MySql? - PullRequest
1 голос
/ 17 января 2009

Предположим, что таблица использует натуральный ключ и содержит несколько существующих строк. Что было бы самым простым способом модифицировать столбец суррогатного ключа и заполнить его уникальными значениями, используя MySql?

т.е. преобразование

table employees
(
    social_security_no varchar(20),
    ...
    constraint emp_pk primary key (social_security_no)
);

до

table employees
(
    id int,
    social_security_no varchar(20),
    ...
    constraint emp_pk primary key (id)
);

и заполните новый столбец идентификатора действительным идентификатором: s.

Спасибо / Эрик

1 Ответ

3 голосов
/ 18 января 2009

Simple:

ALTER TABLE employees DROP PRIMARY KEY;
ALTER TABLE employees ADD (id INT AUTO_INCREMENT PRIMARY KEY);

По желанию, вы (вероятно) захотите сделать это:

CREATE INDEX employees_ssn ON employees (social_security_no);

и для любых ссылочных таблиц:

ALTER TABLE blah ADD (employees_fk INT);
UPDATE blah b SET employees_fk = (SELECT id FROM employees WHERE social_security_no = b.ssn);
ALTER TABLE blah DROP (ssn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...