2009-01-17 13 views
1

Supposons une table qui utilise une clé naturelle et possède un nombre de lignes existant. Quel serait le moyen le plus simple de moderniser une colonne de clé de substitution et de la remplir avec des valeurs uniques en utilisant MySql?Retrofit clé de substitution dans le tableau avec clé naturelle dans MySQL?

à savoir transformer

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

et remplir la nouvelle colonne id avec carte d'identité valide: s.

Merci/Erik

Répondre

3

simple:

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

En option, vous y (probablement) veulent faire:

CREATE INDEX employees_ssn ON employees (social_security_no); 

et pour toutes les tables de référencement:

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