我想用
ALTER TABLE
命令来ADD CONSTRAINT
。我经常这样做没有问题,但在这种情况下,我也需要将其添加为INDEX
。
来自 Microsoft website 它显示以下...
-- ALTER TABLE options
< table_constraint > ::=
[ CONSTRAINT constraint_name ]
{
{PRIMARY KEY | UNIQUE }
{
NONCLUSTERED (column [ ASC | DESC ] [ ,... n ])
| NONCLUSTERED HASH (column [ ,... n ] ) WITH ( BUCKET_COUNT = bucket_count )
}
| FOREIGN KEY
( column [ ,...n ] )
REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]
| CHECK ( logical_expression )
}
<column_index> ::=
INDEX index_name
{ [ NONCLUSTERED ] | [ NONCLUSTERED ] HASH WITH (BUCKET_COUNT = bucket_count)}
<table_index> ::=
INDEX index_name
{[ NONCLUSTERED ] HASH (column [ ,... n ] ) WITH (BUCKET_COUNT = bucket_count)
| [ NONCLUSTERED ] (column [ ASC | DESC ] [ ,... n ] )
[ ON filegroup_name | default ]
| CLUSTERED COLUMNSTORE [WITH ( COMPRESSION_DELAY = {0 | delay [Minutes]})]
[ ON filegroup_name | default ]
}
我通常会像下面这样添加主键,效果很好:
ALTER TABLE [table_one]
ADD CONSTRAINT [PK_7_table_one]
PRIMARY KEY CLUSTERED ([id] ASC)
WITH(
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
)
ON[PRIMARY];
SQL Server Management Studio 使用以下脚本编写表:
CREATE UNIQUE NONCLUSTERED INDEX [IX_table_one]
ON [dbo].[table_one] ( [guid] ASC )
WITH (
PAD_INDEX = OFF
STATISTICS_NORECOMPUTE = OFF
SORT_IN_TEMPDB = OFF
IGNORE_DUP_KEY = OFF
DROP_EXISTING = OFF
ONLINE = OFF
ALLOW_ROW_LOCKS = ON
ALLOW_PAGE_LOCKS = ON
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF
) ON [PRIMARY]
所以现在我正在做以下事情:
ALTER TABLE [table_one]
ADD CONSTRAINT [IX_7_table_one_guid]
UNIQUE NONCLUSTERED ([id] ASC)
WITH(
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
)
ON[PRIMARY];
但是,我觉得我错过了什么。就像我需要
UNIQUE NONCLUSTERED INDEX ([id] ASC)
(我知道这是行不通的)。我如何让它像这样显示“索引”?