Wil*_*ohl 5 sql t-sql primary-key clustered-index
我发现了这个问题,但它似乎没有回答这个问题......
如何编写IF T-SQL语句来说:
IF NOT ([TableName] has a CLUSTERED PK)
ALTER TABLE to add the CLUSTERED PK
Run Code Online (Sandbox Code Playgroud)
mar*_*c_s 10
试试这个
IF NOT EXISTS (SELECT *
FROM sys.indexes
WHERE object_id = OBJECT_ID('dbo.MdsInventar')
AND index_id = 1
AND is_primary_key = 1)
......
Run Code Online (Sandbox Code Playgroud)
聚集索引总是index_id= 1.当然 - 如果你这样检查(带is_primary_key = 1条件),那么表上可能总有一个非主聚集索引 - 所以你将无法创建另一个聚簇索引.所以也许你需要失去AND is_primary_key = 1条件并检查"是否存在聚集索引".
更新:或者如果使用index_id = 1对您来说似乎是黑魔法,您也可以使用该type列:
IF NOT EXISTS (SELECT *
FROM sys.indexes
WHERE object_id = OBJECT_ID('dbo.MdsInventar')
AND type = 1
AND is_primary_key = 1)
......
Run Code Online (Sandbox Code Playgroud)