更改SQL数据库上的主键

时间:2012-12-09 17:15:27

标签: sql azure azure-sql-database

我有一个使用SQL Server迁移助手从MySql迁移的数据库,现在它存储在Azure中。

SSMA显然为其中一个表生成了一个名为ssma$rowid的新主键列。我正在尝试将PK更改回Card_Key,但我收到以下错误:

  

应用更改时遇到错误   执行Transact-SQL语句时发生异常:
  ALTER TABLE [carddb]。[Cards] ALTER COLUMN [Card_Key] INT NOT NULL。
  索引'Card_Key'依赖于列'Card_Key'   ALTER TABLE ALTER COLUMN Card_Key失败,因为一个或多个对象
  访问此列。

如何再次Card_Key PK?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用正确的主键创建一个新表[cards2]并将数据从[cards]复制到新表中(只需运行INSERT INTO cards2 ... SELECT ... FROM cards)。一旦完成,您可以删除(或重命名为[cardsold]安全的一面)原始表[卡],并将新表重命名为[cards]:sp_rename cards2,cards

这应该有用。