为什么运行下列语句时出错?
CREATE UNIQUE CLUSTERED INDEX indPhone
ON 书店表(电话)
服务器: 消息 1902,级别 16,状态 3,行 1
不能在表 '书店表' 上创建多个聚集索引。请在创建新聚集索引前除去现有的聚集索引 'PK__书店表__78B3EFCA'。
ALTER TABLE 图书销售表
ALTER COLUMN 销售数量 int
服务器: 消息 5074,级别 16,状态 6,行 1
对象 'CK__图书销售表__销售数量__7C8480AE' 依赖于 列 '销售数量'。
服务器: 消息 4922,级别 16,状态 1,行 1
ALTER TABLE ALTER COLUMN 销售数量 失败,因为有一个或多个对象访问此列。
在SQL Server当中,一个表只能有一个 CLUSTERED INDEX(聚集索引),你已经在该表上建立了主键书店表,而SQL Server建立主键的时候如果没有指定是聚集索引还是非聚集索引,默认为聚集索引,
可以这样改:
ALTER TABLE 书店表 DROP CONSTRAINT 'PK__书店表__78B3EFCA'
ALTER TABLE 书店表 ADD CONSTRAINT 'PK__书店表__78B3EFCA'
PRIMARY KEY NONCLUSTERED ("该表主键字段")
--- 主键可以如此查到:查看 Primarykey 对应的字段
EXEC sp_help 书店表
然后执行先前语句:
CREATE UNIQUE CLUSTERED INDEX indPhone
ON 书店表(电话)
这样应该是可以了