2
A
回答
1
試試這個
select
distinct 'Alter table MyTable drop constraint '+o.name
from sys.objects o
join sys.columns c on o.parent_object_id = c.object_id AND o.type='UQ'
join sys.tables t on c.object_id = t.object_id
where t.name = 'MyTable'
1
這將刪除所有的唯一約束,它不會丟棄主鍵。主鍵仍然會強制唯一性。
declare @table_name nvarchar(50) = 'yourtable' -- table
declare @SchemaName nvarchar(50) = 'yourschema' -- dbo
declare @Catalog nvarchar(50) = 'yourdatabase' -- database
select * into #t from
(
select 'ALTER TABLE ' + TC.CONSTRAINT_CATALOG + '.' + TC.CONSTRAINT_SCHEMA + '.' + TC.TABLE_NAME + ' DROP CONSTRAINT ' + CCU.CONSTRAINT_NAME query
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS as TC
inner join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE as CCU
on TC.CONSTRAINT_CATALOG = CCU.CONSTRAINT_CATALOG
and TC.CONSTRAINT_SCHEMA = CCU.CONSTRAINT_SCHEMA
and TC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME
where TC.CONSTRAINT_CATALOG = coalesce(@Catalog, db_name())
and TC.CONSTRAINT_SCHEMA = @SchemaName
and TC.TABLE_NAME = @table_name
and TC.CONSTRAINT_TYPE = 'UNIQUE'
) a
DECLARE @sqlstring as nvarchar(500)
DECLARE SqlCursor CURSOR FAST_FORWARD FOR
SELECT query FROM #t
OPEN SqlCursor
FETCH NEXT FROM SqlCursor
INTO @sqlstring
WHILE @@FETCH_STATUS = 0
BEGIN
exec(@sqlstring)
FETCH NEXT FROM SqlCursor
INTO @sqlstring
END
CLOSE SqlCursor
DEALLOCATE SqlCursor
DROP TABLE #t
相關問題
- 1. 刪除所有列中的唯一鍵
- 2. 用於刪除所有外鍵約束和唯一約束的TSql腳本?
- 3. 如何從表中刪除所有唯一鍵?
- 4. 刪除所有唯一行
- 5. TSQL - 刪除所有行除1每組
- 6. 刪除重複的行,沒有唯一的鍵 - 關係表
- 7. 如何刪除所有表中的所有外鍵約束?
- 8. 對於一行中的所有唯一單元格,刪除行
- 9. 由於外鍵約束,無法刪除現有的唯一鍵
- 10. MySQL刪除所有表,忽略外鍵
- 11. SQL刪除唯一行表
- 12. TSQL查詢,刪除所有重複的記錄,但一個
- 13. 刪除所有匹配鍵
- 14. 刪除所有主鍵
- 15. 刪除數組中的所有唯一標題條目
- 16. 刪除唯一鍵在MySQL和留住
- 17. SQL唯一鍵IFF不會被刪除
- 18. 如何刪除mysql中的外鍵唯一鍵?
- 19. Java代碼查找數據庫中所有表的唯一鍵
- 20. tsql - 刪除最後一行
- 21. 獲取所有唯一的鍵和值
- 22. MySQL:改變表格並刪除重複的唯一鍵
- 23. 刪除ASP.NET表中的所有錶行
- 24. 唯一地插入到沒有唯一鍵的MySQL表中
- 25. 刪除站點上所有位置的唯一權限SharePoint 2013
- 26. 從沒有唯一列的表中刪除部分重複項
- 27. 如何從沒有唯一鍵的只有「普通」SQL和沒有臨時表的表中刪除重複行?
- 28. 如何刪除表中的一行時刪除所有相關的表記錄?
- 29. 刪除表中的所有行NHibernate的
- 30. 在MySql中刪除除了一個之外的所有表格
只是問:它以某種方式不同(查詢部分和我們說,我們將使用 'USE DB_NAME' 切換到所需的DB)來自: SELECT「ALTER TABLE '+ TC.CONSTRAINT_SCHEMA +'。' + TC.TABLE_NAME +'DROP CONSTRAINT'+ TC.CONSTRAINT_NAME從INFORMATION_SCHEMA.TABLE_CONSTRAINTS查詢 作爲TC其中TC.CONSTRAINT_TYPE ='UNIQUE' – Bax