刪除某個架構下所有表的主外鍵, 然後刪除該架構下所有的表


select 
  'ALTER TABLE [lcms].['+o.name+'] drop CONSTRAINT '+fk.name+';'  AS  Command
from 
  sys.foreign_keys  fk  
  JOIN sys.all_objects  o ON (fk.parent_object_id=o.object_id)
 where o.schema_id=8


得到架構id:

SELECT s.schema_id
FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id 
WHERE s.Name = 'lcms'




刪除某一個架構下所有的表

select 
  'drop TABLE [lcms].[' + t.name + ']'  AS Command
from  sys.schemas as s left join sys.tables as t on s.schema_id=t.schema_id 
 
where s.schema_id=8
  


生成刪除某一個架構下所有的表的關聯關係的sql語句

select
 'ALTER TABLE [lcms].['+o.name+'] drop CONSTRAINT '+fk.name+';' 
from
 sys.foreign_keys fk 
 JOIN sys.all_objects o ON (fk.parent_object_id=o.object_id)
where o.schema_id in (
select s.schema_id from sys.schemas as s
where s.name='架構名'
)


批量生產一些sql語句, 比如批量刪除修改字段名的sql語句;

select  
 ' alter table SES.'+t.name+' add CreateDate datetime not null; '
 
from  sys.schemas as s left join sys.tables as t on s.schema_id=t.schema_id   
   
where s.schema_id=10


select  
 ' EXECUTE sp_rename N''SES.'+t.name+'.UpdatedBy'',N''LastUpdatedByUserID'', ''COLUMN'';'   
from  sys.schemas as s left join sys.tables as t on s.schema_id=t.schema_id   
   
where s.schema_id=10

select  
 ' alter table SES.'+t.name+' drop column CreatedByUserID ; '
 
from  sys.schemas as s left join sys.tables as t on s.schema_id=t.schema_id   
   
where s.schema_id=10




發佈了99 篇原創文章 · 獲贊 12 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章