Far*_*ker 1 sql sql-server sql-server-2008 table-index
无法删除[U_Family]下表中的列:
表CREATE脚本:
CREATE TABLE [dbo].[Users](
[U_Id] [int] IDENTITY(101,1) NOT NULL,
[U_Name] [nvarchar](50) NULL,
[U_Family] [nvarchar](50) NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[U_Id] ASC
),
CONSTRAINT [IX_UserIdUnique] UNIQUE NONCLUSTERED
(
[U_UserId] ASC
)
) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Users(UserId)] ON [dbo].[Users]
(
[U_Id] ASC
)
INCLUDE ( [U_Name],
[U_Family]) ) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
错误信息 :
'用户'表 - 无法修改表.索引'IX_Users(UserId)'依赖于列'U_Family'.ALTER TABLE DROP COLUMN U_Family失败,因为一个或多个对象访问此列.
我知道问题是因为这个索引:
CREATE UNIQUE NONCLUSTERED INDEX [IX_Users(UserId)] ON [dbo].[Users]
(
[U_Id] ASC
)
INCLUDE ( [U_Name],
[U_Family])) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
但我从未找到编辑此索引并[U_Family]从包含的列中删除的语法.
我无法删除此索引,因为它由外键约束使用,我不应该删除它.
任何解决方案????
提前致谢.
在SQL Server 2008中,您应该能够"重新创建"索引并将现有索引放在一个命令中 - 试试这个:
CREATE UNIQUE NONCLUSTERED INDEX [IX_Users(UserId)]
ON [dbo].[Users]([U_Id] ASC)
WITH DROP_EXISTING
Run Code Online (Sandbox Code Playgroud)
本WITH DROP_EXISTING应与包括删除列"老"指数.运行该命令后,您应该可以从表中删除列.
| 归档时间: |
|
| 查看次数: |
13076 次 |
| 最近记录: |