【问题标题】:Retrofit surrogate key in table with natural key in MySql?用MySql中的自然键改造表中的代理键?
【发布时间】:2009-01-17 19:46:06
【问题描述】:

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

谢谢/埃里克

【问题讨论】:

    标签: mysql primary-key surrogate-key natural-key


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2011-10-22
      • 2013-12-01
      • 1970-01-01
      • 2012-09-26
      • 2011-12-19
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多