假设一个表使用自然键并且具有许多现有行。改进代理键列并使用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)
);
并使用有效的id:s填充新的id列。
谢谢/ Erik
答案 0 :(得分: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);