1
14
我将首先向表中添加另一列,用新的pk填充它。 然后,我将使用UPDATE语句更新所有相关表中的新FK字段。 然后可以删除旧的pk和旧的fk字段。 编辑: 是的,正如伊恩所说,您必须先删除,然后重新创建所有外键约束。 |
2
6
不确定您使用的是哪个DBMS,但如果恰好是SQL Server:
允许您更新/插入主键列。然后当您完成更新密钥时(您可以使用 CURSOR 如果逻辑复杂的话)
希望有帮助! |
3
2
这可能与MS SQL无关,但: truncate table重置标识计数器,因此快速而脏的一种方法是 1)备份 2)将表内容复制到临时表: 3)将临时表内容复制回表(具有标识列):
|
4
1
你为什么还要麻烦?基于计数器的“身份”主键的关键是数字是任意的,没有意义。 |
5
1
您可以按照以下步骤进行操作:
但正如其他人所说,所有这些工作都是不需要的。 我倾向于将标识类型主键看作是C中指针的等价物,我使用它们引用其他对象,但从不显式修改访问它们。 |
6
-1
如果这是Microsoft的SQL Server,您可以做的一件事是使用 [DBCC检查标识]( http://msdn.microsoft.com/en-us/library/ms176057(SQL.90).aspx) 假设您有一个表,希望在其中移动数据,并对主键重新编号。例如,表的名称是 错误代码 . 它有两个字段, 错误代码 (这是主键)和 描述 . 使用DBCC CHECKIDENT的示例代码
在这个示例中,您将有效地将所有行移动到另一个主键,然后重新设置,以便下一次插入采用8000个ID。 希望这有点帮助! |
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |