Модифицировать суррогатный ключ в таблице с естественным ключом в MySql?
Предположим, что таблица использует естественный ключ и содержит несколько существующих строк. Что было бы самым простым способом модифицировать столбец суррогатного ключа и заполнить его уникальными значениями, используя 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 ответ
Решение
Просто:
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);