ALTER新增列後,立即UPDATE該列會報錯

2022-07-03 13:42:18 字數 1961 閱讀 8934

sql 2008 r2

請看語句:

alter table #t add col2 int

update #t

set col2 = 0

報錯:列名'col2'無效。

但如果緊接的是select,一切正常,可以發現col2成功新增到表中。

非要接update的話,必須在alter後go一下,不然報錯無懸念。

請問:能不能不go,也能update。因為前面我定義了很多變數,一go回到解放前,不甘心。

可以通過exec ,把update的執行計畫生成放到執行時進行

alter table #t add col2 int

exec('

update #t

set col2 = 0

sql 的執行,是先分析並生成執行計畫,再做實際的執行

當你把 alter table 和 update 放在一齊的時候,在分析並生成執行計畫這步,由於列不存在,所以無法為 update 生成執行計畫,所以就報錯了

所以最好的習慣是用go代替分號,養成好習慣

注意使用go的時候需換行

附sql server 增加字段、修改字段、修改型別、修改預設值

1、修改欄位名:

alter table 表名 rename column a to b

2、修改字段型別:

alter table 表名 alter column 欄位名 type not null

3、修改字段預設值   alter table 表名 add default (0) for 欄位名 with values

如果欄位有預設值,則需要先刪除欄位的約束,在新增新的預設值,

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='欄位名'

根據約束名稱刪除約束

alter table 表名 drop constraint 約束名

根據表名向字段中增加新的預設值

alter table 表名 add default (0) for 欄位名 with values

4、增加字段:

alter table 表名 add 欄位名 type not null default 0

5、刪除字段:

alter table 表名 drop column 欄位名;

1、修改欄位名:

alter table 表名 rename column a to b

2、修改字段型別:

alter table 表名 alter column 欄位名 type not null

3、修改字段預設值   alter table 表名 add default (0) for 欄位名 with values

如果欄位有預設值,則需要先刪除欄位的約束,在新增新的預設值,

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='欄位名'

根據約束名稱刪除約束

alter table 表名 drop constraint 約束名

根據表名向字段中增加新的預設值

alter table 表名 add default (0) for 欄位名 with values

4、增加字段:

alter table 表名 add 欄位名 type not null default 0

5、刪除字段:

alter table 表名 drop column 欄位名;

DB2 alter 新增 刪除 修改列

掃碼加入qq群。免費獲取一手資料。還有福利發放哦!sql語句 增加列 修改列 刪除列 1 新增字段 語法 alter table 表名稱 add 欄位名稱 型別 demo alter table tablename add columnname varchar 50 2 更改字段型別 或者字段長度 ...

PrefsActivity修改配置後立即生效。

extends preferenceactivity implements sharedpreferences.onsharedpreferencechangelistener 這樣的activity需要覆蓋方法 public void onsharedpreferencechanged share...

sql 新增列,刪除列

新增沒有預設值 alter table 表名 add bazaartype char 1 有預設值的新增列 alter table表名add bazaartype char 1 default 0 刪除沒有預設值的列 alter table 表名drop column bazaartype 刪除有預...