1

假设一个表使用自然键并且有许多现有的行。改造代理键列并使用 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 列。

谢谢/埃里克

4

1 回答 1

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);
于 2009-01-17T21:56:51.370 回答