程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Alter Table對表結構修改時,常見的錯誤及解決方法

Alter Table對表結構修改時,常見的錯誤及解決方法

編輯:關於SqlServer

SQL Server幫助文檔中,Alter Table對表結構的修改命令,很多都會出現錯誤,下面特針對此常見錯誤做出詳細說明,文章中有引用作者[Leo]的方法例題

代碼: 一、為標識列添加默認值 
下面的示例將修改 CompanyName 列,使其具有默認值:
ALTER TABLE MyCustomers ADD DEFAULT 'Datum Corporation' FOR [CompanyName]

二、如果設置了該列的默認值,那麼再對該列結構作修改操作,都將引發錯誤(如刪除或修改該列的默認值等)
如執行:alter table TableName drop column ColumnName語句時就會報錯,如下,
“消息 5074,級別 16,狀態 1,第 1 行
對象'DF__Tb_SalaryPar__aa__7DB89C09' 依賴於 列'aa'。
消息 4922,級別 16,狀態 9,第 1 行
由於一個或多個對象訪問此列,ALTER TABLE DROP COLUMN aa 失敗。”

因為存在了default約束,此時我們需要做的:
1.查找出表中該列的約束名稱
declare @conName varchar(50)
select  @conName =b.name from sysobjects b join syscolumns a on b.id = a.cdefault 
where a.id = object_id('TableName') 
and a.name ='ColumName'

2. 刪除約束刪除該列 即可
exec('alter table TableName drop constraint ' + @conName)
exec('alter table TableName drop column ColumName')

三、其它操作
    向表中增加一個address字段: 
  ALTER TABLE distributors ADD COLUMN [address] varchar(30)
  從表中刪除一個字段: 
  ALTER TABLE distributors DROP COLUMN [address] RESTRICT
  在一個操作中修改兩個現有字段的類型: 
  ALTER TABLE distributors ALTER COLUMN [address] varchar(20)
    給一個字段增加一個非空約束:
    ALTER TABLE distributors ALTER COLUMN [address] varchar(80) NOT NULL
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved