use*_*288 3 mysql database-design primary-key
我有一张user表,用varchar作主键。现在从另一个地方我得到了int比varchar主键更好的性能提示。
所以我想将我的主键更改为int. 为此,我创建了另一个user表并将数据复制到该表中,但先前的主键值除外。
到此为止没有问题。
现在我的问题是我有很多表,它们user通过以前的主键与表相关。现在我想将其他表的行与新的主键值相关联。
这该怎么做?
小智 7
如果要更改主键,则不必制作另一个表。
我将执行的步骤是:
例如
表用户( oldID varchar(10), newID int, -- 添加的新列,我假设此时您已填充该列 ... ) tbl用户登录( keyUser_oldID varchar(10), keyNewID int NULL, ... ) 运行以下...这些天我主要使用 SQL Server,所以希望这个伪代码给出了正确的想法。该原则适用于任何主要的基于表的数据库系统。 更新 tblUserLogin SET keyNewID = (SELECT newID FROM tblUser WHERE oldID = keyUser_oldID
这是一般原则,需要考虑一些事项。
..你没有提到数据库是否用于任何重要的事情。即使不是: