IF EXISTS ( SELECT TOP 1
1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE [TABLE_NAME] = 'ShopSkuId'
AND [COLUMN_NAME] = 'ProductBatch' )
BEGIN
--根据字段删除索引
DECLARE @TableName NVARCHAR(50)= 'ProductBatch'
DECLARE @RowName NVARCHAR(50)= 'ShopSkuId'
DECLARE @sql NVARCHAR(500)
IF EXISTS ( SELECT indexname = a.name --索引名称
,
tablename = c.name --表名称
,
indexcolumns = d.name --字段名称
,
a.indid
FROM sysindexes a
JOIN sysindexkeys b ON a.id = b.id
AND a.indid = b.indid
JOIN sysobjects c ON b.id = c.id
JOIN syscolumns d ON b.id = d.id
AND b.colid = d.colid
WHERE a.indid NOT IN ( 0, 255 )
AND c.name = @TableName
AND d.name = @RowName )
BEGIN
DECLARE @index_name NVARCHAR(50)
SELECT @index_name = a.name
FROM sysindexes a
JOIN sysindexkeys b ON a.id = b.id
AND a.indid = b.indid
JOIN sysobjects c ON b.id = c.id
JOIN syscolumns d ON b.id = d.id
AND b.colid = d.colid
WHERE a.indid NOT IN ( 0, 255 )
AND c.name = @TableName
AND d.name = @RowName
SET @sql = 'drop INDEX ' + @index_name + ' on '
+ @TableName;
EXEC(@sql)
END
-- 删除约束
DECLARE @defname VARCHAR(100)
DECLARE @cmd VARCHAR(100)
SELECT @defname = name
FROM sysobjects so
JOIN sysconstraints sc ON so.id = sc.constid
WHERE OBJECT_NAME(so.parent_obj) = @tablename
AND so.xtype = 'D'
AND sc.colid = ( SELECT colid
FROM syscolumns
WHERE id = OBJECT_ID(@tablename)
AND name = @RowName
)
SELECT @cmd = 'ALTER TABLE ' + @tablename
+ ' DROP CONSTRAINT ' + @defname
IF @cmd IS NOT NULL
EXEC ( @cmd )
-- 删除字段
SET @sql = 'ALTER TABLE ' + @TableName + ' DROP COLUMN '
+ @RowName
EXEC ( @sql )
END