2009-01-17 61 views
1

假設一個使用自然鍵並具有多個現有行的表。使用MySql改造代理鍵列並使用唯一值填充它最簡單的方法是什麼?使用MySql中的自然鍵在表中改造代理鍵?

I.e.變換

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) 
); 

,並填寫有效身份證件新的id列:秒。

感謝/埃裏克

回答

3

簡單:

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);