修改欄位的資料型別 欄位的預設值

2021-04-13 07:27:49 字數 2327 閱讀 2072

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...