[英]Unable to alter the Composite Primary Key in Azure Sql
表定義:
CREATE TABLE [dbo].[tbl](
[Id1] [int] NOT NULL,
[Id2] [int] NOT NULL,
[Id3] [int] NOT NULL,
[IsActive] [bit] NOT NULL,
[CreatedTs] [datetime] NOT NULL,
CONSTRAINT [PK_tbl] PRIMARY KEY CLUSTERED
(
[Id1] ASC,
[Id2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [DF_tbl_IsActive] DEFAULT ((1)) FOR [IsActive]
GO
ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [DF_tbl_CreatedTs] DEFAULT (getdate()) FOR [CreatedTs]
GO
在上表中,我使用“ Id1 ”和“ Id2 ”組合來組合主鍵。 現在,我想在復合主鍵中包含“ Id3 ”,為此,我正在執行以下操作:
ALTER TABLE tbl
DROP CONSTRAINT PK_tbl
ALTER TABLE [dbo].[tbl] ADD CONSTRAINT [PK_tbl] PRIMARY KEY CLUSTERED
(
[Id1] ASC,
[Id2] ASC,
[Id3] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
上面的查詢在我的本地sql服務器數據庫上運行得很好,但是當我在Azure數據庫上運行它時出現錯誤:
此版本的SQL Server不支持沒有聚集索引的表。 請創建一個聚集索引,然后重試。
我應該如何在Azure SQL上修改復合主鍵?
Azure SQL數據庫的最新更新(V12)允許您擁有沒有聚集索引的表(即作為堆)。 如果將服務器升級到最新版本,則可以運行查詢以成功修改PK。
V12啟用的其他功能: http : //azure.microsoft.com/zh-cn/documentation/articles/sql-database-preview-whats-new/
如何升級: http : //azure.microsoft.com/zh-cn/documentation/articles/sql-database-preview-upgrade/
問題在於,刪除PK約束也會刪除基礎群集索引,並且Azure中不允許堆。
最好的辦法是創建具有所需結構的新表,復制數據,刪除舊表,重命名新表並重新創建FK(如果有)。
舊的和V12版本的SQL數據庫服務器支持您正在執行的操作。 僅在非V12服務器上進行插入時才需要集群索引。 您可以在非V12數據庫中創建堆,也可以刪除並重新創建聚簇索引/約束。 因此,您不應收到此錯誤。 您如何運行這些語句? 您使用什么工具來運行語句?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.