1。修改欄位的資料型別、欄位的預設值
(1)、先刪除欄位中的約束,再進行修改資料型別,有必要可以再加上已經刪除的約束。
(2)、修改預設值時,先要刪除欄位中的約束,再新增新的預設值。
declare @name nvarchar(128);/
select @name=obj.name from sysobjects obj inner join /
sysobjects tab on obj.parent_obj = tab.id inner join /
syscolumns col on obj.info = col.colid and tab.id = col.id /
where (tab.name = '表名') and (col.name = '欄位名');//查詢相應欄位的約束名
exec('alter table [表名] drop constraint '+@name);//刪除約束名
alter table [表名] alter column [要修改型別的欄位名] 資料型別;//修改資料型別
alter table [表名] add default '預設值' for [欄位名] with values;//新增預設值
2。用sql語句修改表中字段的預設值
/*--修改/刪除有預設值的字段 示例--*/
--測試表
create table t1(
id int default(0),
name varchar(16) default(16),
memo varchar(255) default(''))go
--要求,刪除name欄位,將memo欄位改為: memo varchar(32) default(32)
--處理方法
----a.先刪除要處理欄位的預設值約束
declare @s varchar(8000)
set @s=''
select @s=@s+'
alter table ['+b.name+'] drop constraint ['+d.name+']'
from syscolumns a
join sysobjects b on a.id=b.id
join syscomments c on a.cdefault=c.id
join sysobjects d on c.id=d.id
where b.name='t1'
and (a.name='name' or a.name='memo')
exec(@s)
----b.再刪除字段 name
alter table t1 drop column [name]
----c.修改字段 memo
alter table t1 alter column [memo] varchar(32)
----d.為字段 memo 新增預設值約束
set @s='alter table t1 add constraint
[df__t1__memo__'+cast(newid() as varchar(36))
+'] default (32) for memo'
exec(@s)
go--插入資料測試
insert t1 values(default,default)
select * from t1
go--刪除測試
drop table t1
或alter table 表名 add default ('修改後的預設值') for 欄位名 with values
注:如果該欄位以前已經有預設值了,在修改之前需要先將約束刪除,否則會報錯
刪約束的sql:
alter table 表名 drop constraint 約束名
關於約束名,需要先查一下,
查約束名的sql:
select c.name from sysconstraints a
inner join syscolumns b on a.colid=b.colid
inner join sysobjects c on a.constid=c.id
where a.id=object_id('表名')
and b.name='欄位名『
Mysql 修改字段預設值
mysql 5.7.13 問題描述 建表的時候,users info表的role id欄位沒有預設值,後期發現註冊的時候,需要提供給使用者乙個預設角色,也就是給role id欄位乙個預設值。當前users info表的role id 在建立表的時候,沒有設定預設值,資料庫自動設定為空。原先建表語句 ...
SQL修改字段預設值方法
declare tablename varchar 30 declare fieldname varchar 50 declare sql varchar 300 set tablename dncdeta1 set fieldname description set sql select sql ...
修改表增加字段預設值default
對個生產庫的表增加1個字段.欄位型別是int型,表資料有2千萬條,alter table table name add xxoo number 4 default 0 因此 不僅要修改字典,還要重新整理全部資料.1 在alter sql中有帶預設值,oracle會直接重新整理全部的記錄。2 在alt...