国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]如何查詢Sql Server中所有默認值約束并刪除它們

admin
2019年9月28日 20:48 本文熱度 3523
今天遇到一個問題,就是要將某數據庫中所有PNumber列刪除,這個數據庫基本上所有表都有這個字段,所以我寫了一段sql來刪除所有的PNumber列,如下:
declare @columnname nvarchar(1000)
declare my_cur cursor local for 
select b.name from sys.syscolumns a
inner join sys.tables b on a.id=b.object_id 
where a.name=''PreNumber''

open my_cur
fetch next from my_cur into @columnname
while @@fetch_status=0
begin  
exec (''alter table ''+@columnname+'' drop column PreNumber'') 
fetch next from my_cur into @columnname
end

close my_cur
deallocate my_cur

sql是沒有問題的,但執行的時候報了類似下面的錯誤:
消息 5074,級別 16,狀態 1,第 2 行
對象''DF_XXXX_PNumber_Default'' 依賴于 列''PNumber''。
消息 4922,級別 16,狀態 9,第 2 行
由于一個或多個對象訪問此列,ALTER TABLE DROP COLUMN Creator 失敗。


原因就是創建PNumber列的時候為PNumber列創建了默認值,所以我們通過sql命令刪除時會要求我們先刪除對應的默認值約束(如果直接在設計器中刪除不會有此要求,設計器會同時刪除對應的約束)。

那么我們要怎么找出數據庫中所有表中PNumber列的默認值約束呢?這時候就需要利用sys.default_constraints目錄視圖了。

sys.default_constraints目錄視圖


我們所有定義的默認值都可以通過這個目錄視圖查詢出來,sys.default_constraints中有幾個重要的列:
1,Name 約束名稱
2,parent_object_id 所屬表的表標識
3,parent_column_id 默認值對應列的列標識
4,definition 默認值的定義
5,is_system_named 約束名稱是不是自已定義的, 0代表是自己定義的,1代表是系統定義的。

有了這些信息,我可以鏈接sys.columns表與object_name函數查出默認值對應的表名與列名,sql如下:
select name as 默認值名稱,
object_name(t.parent_object_id) as 表名,
(select sys.columns.name from sys.columns 
where sys.columns.column_id=t.parent_column_id 
and sys.columns.object_id=t.parent_object_id) as 列名,
t.definition from sys.default_constraints t

如同批量刪除列一樣,我們可以寫一個游標,循環刪除所有的默認值。
declare @name varchar(100)
declare @tablename varchar(100)
declare my_cur cursor local for 
select a.name,a.tablename from 
(select name,
object_name(t.parent_object_id) as tableName,
(select sys.columns.name from sys.columns 
where sys.columns.column_id=t.parent_column_id 
and sys.columns.object_id=t.parent_object_id) as columnName,
t.definition from sys.default_constraints t) a where columnname=''PNumber''

open my_cur
fetch next from my_cur into @name,@tablename
while @@fetch_status=0
begin  
exec (''alter table ''+@tablename+'' drop constraint ''+@name) 
fetch next from my_cur into @name,@tablename
end

close my_cur
deallocate my_cur

查詢指定表cs_test2_list中字段time7是否存在約束值:
select a.name from (select name,object_name(t.parent_object_id) as tableName,(select sys.columns.name from sys.columns where sys.columns.column_id=t.parent_column_id and sys.columns.object_id=t.parent_object_id) as columnName,t.definition from sys.default_constraints t) a where columnname=''time7'' and tablename=''cs_test2_list''

該文章在 2019/9/28 20:48:02 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: KUAIMAO CC| 少妇人妻无码久久久久久 | 亚洲中文字幕精品在线视频 | 免费a级毛片出奶水 | 亚洲国产综合在线 | 精品人妻系列无码人妻免费视频 | 国产一卡二卡3卡四卡精品高清免费在线观看 | 精品欧美国产一区二区三区 | 欧美无砖专区一中文字\ | 中文字幕熟妇人妻在线视频手机看片 | 日本无码欧美一区精品久久 | 四虎国产精品永久在线 | 国产中文视频 | 少妇毛又多又黑A片欧美 | 一区二区三区啪啪视频 | 亚洲区图片区色综合网 | 无码国产成人久久久久免费 | 2025精品国色卡一卡二 | 国产v视频一区二区三区亚洲不卡在线网站天堂 | 日韩A片无码一区二区三区电影 | 日韩欧美激情国产一区二区蜜 | 一本一道波多野结衣一区 | 在线a亚洲视频播放在线观看 | 精品精品国产高清a毛片 | 国产夫妻自拍99 | 中文国产成人精品久久久 | 国产在线精品亚洲第一区香 | 久久久久久自慰出白浆 | 中日韩精品卡一卡二卡3卡 中日韩精品视频一区二区三区 | 国产欧美精品一区二区色综合 | 好男人社区神马WWW在线观看 | 国产午夜成人av在线播放 | 公交车上无耻挖阴 | 国产色精品久久人妻无码看片 | 1024国产欧美日韩精品 | 99视频在线观看 | 精品亚洲欧美高清不卡高清 | 少妇人妻av毛片在线看 | 国产日产欧产精品精乱了派 | 无人码一区二区三区 | 精品深夜AV无码一区二区老年 |