我有一个名为doc.MyTable
的表格,我想通过重命名为doc._MyTable
来使其过时。然后,我想创建一个新的doc.MyTable
,并拥有与旧的doc.MyTable
相同的主键。但问题是SQL Server表示该主键已经存在。这意味着我还需要重命名旧的主键。
我尝试了以下操作:
EXEC SP_RENAME 'doc.MyTable', '_MyTable'
-- Method 1
EXEC SP_RENAME 'PK_MyTable', 'PK__MyTable'
-- Method 2
ALTER TABLE [doc].[_MyTable] DROP CONSTRAINT [PK_MyTable]
ALTER TABLE [doc].[_MyTable] ADD CONSTRAINT [PK__MyTable]
PRIMARY KEY CLUSTERED
(
[document_id] ASC,
[line_id] ASC,
[sub_line_id] ASC
)
-- Create new table
CREATE TABLE [doc].[MyTable] (
... columns
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED (
... key columns
)
... extra conditions
方法1抛出以下错误:
在当前数据库“db_dev”中找不到名称为“PK_MyTable”的项目,因为输入的@itemtype为“(null)”。
而方法2则抛出以下错误:
违反主键约束条件“PK_MyTable”。无法在对象“PK.MyTable”中插入重复键。
重复键值为(10358930,336000,0)。
当我尝试为新表创建新的主键时。
我每次只使用其中一种“方法”。如何解决这个问题?