4

我有以下 SQL 脚本,它似乎在本地 SQL 2008 R2 实例上工作,但在 Azure SQL 上失败。

我已经搜索了网络,但还没有找到任何解决方案。

有什么建议么?

我想避免使用身份列。

CREATE TABLE dbo.[Category]
(
    CategoryId NVARCHAR(36),
    CONSTRAINT PK_Category_CategoryId PRIMARY KEY CLUSTERED(CategoryId)
)
GO
CREATE TABLE dbo.[File]
(
    FileId NVARCHAR(36),
    CONSTRAINT PK_File_FileId PRIMARY KEY CLUSTERED(FileId)
)
GO
CREATE TABLE dbo.[FileCategory]
(
    FileId NVARCHAR(36),
    CategoryId NVARCHAR(36)
    CONSTRAINT FK_FileCategory_FileId FOREIGN KEY (FileId) REFERENCES [File](FileId) ON DELETE CASCADE,
    CONSTRAINT FK_FileCategory_CategoryId FOREIGN KEY (CategoryId) REFERENCES [Category](CategoryId) ON DELETE CASCADE,
)
GO
INSERT INTO [Category] VALUES('ABC')
INSERT INTO [Category] VALUES('DEF')
INSERT INTO [Category] VALUES('GHI')
GO

以上运行正常,但在以下语句中失败,错误如下所示:

DELETE FROM [Category] WHERE [CategoryId] = 'ABC'

消息 40054,级别 16,状态 1,行 3 没有聚集索引的表在此版本的 SQL Server 中不受支持。请创建聚集索引并重试。

4

1 回答 1

2

尝试PRIMARY KEY设置FileCategory-

CREATE TABLE [dbo].[FileCategory]
(
    [FileId] [nvarchar](36) NOT NULL,
    [CategoryId] [nvarchar](36) NOT NULL,
     CONSTRAINT [PK_FileCategory] PRIMARY KEY CLUSTERED 
    (
        [FileId], [CategoryId]
    ) ON [PRIMARY]
) ON [PRIMARY]
于 2013-06-13T13:06:17.763 回答