1. 程式人生 > >when adding column with default value ,當新增一個有預設值的列的時候

when adding column with default value ,當新增一個有預設值的列的時候

修改一些表結構,比如新增一個列應該是比較家常便飯的事情。

如果這個列有預設值,那麼正確的sql應該是:

alter table {tablename}
add {columnname} {type} {null|not null}
constraint {constraint_name} default {default_value}


================================================

如果是僅僅像下面的這種寫法:

alter table {tablename}
add {columnname} {type} {null|not null}
default({default_value})

雖然能成功加列,但是資料庫會新增一個隨機命名的constraint , DF_table_column_{random}

一旦後面想要刪除這個列,可能就要稍微麻煩一點了(名字是隨機的)

要刪除列,就要先刪除constraint,要刪除constraint就要先知道constraint的名字

if exists(select * from syscolumns where id=OBJECT_ID('db.dbo.table') and name='column')
begin
	declare @ConstraintName varchar(50);
	select @ConstraintName=b.name
	from syscolumns a
	inner join sysobjects b
	on a.id=OBJECT_ID('db.dbo.table') --表名
	and a.cdefault=b.id  		  --關聯條件
	and a.name='column'		  --列名
	and b.name like 'DF%';			  
	
	exec ('alter table db.dbo.table drop constraint '
[email protected]
); --drop constraint alter table db.dbo.table drop column {columnname}; --drop column end

================================================



相關推薦

when adding column with default value ,新增一個預設的時候

修改一些表結構,比如新增一個列應該是比較家常便飯的事情。 如果這個列有預設值,那麼正確的sql應該是: alter table {tablename} add {columnname} {type} {null|not null} constraint {constrain

Spring @Value("${property:xxx}") 預設

1. @Value Examples To set a default value in Spring expression, use Elvis operator :     #{expression?:default value} Copy

PostgreSQL 11 新特性解讀 : 新增非空預設欄位不需要重寫表

PostgreSQL 10 版本前表新增不帶預設值的DDL不需要重寫表,只需要更新資料字典,因此DDL能瞬間執行,如下: ALTER TABLE table_name ADD COLUMN flag text; 如果新增的欄位帶預設值,則需要重寫表,表越大,執行時間越長,如下。 ALTER TABLE

PostgreSQL技術週刊第9期:PostgreSQL 11新特性解讀之新增非空預設欄位不需要重寫表

PostgreSQL(簡稱PG)的開發者們: 雲棲社群已有5000位PG開發者,釋出了3000+PG文章(文章列表),沉澱了700+的PG精品問答(問答列表)。 PostgreSQL技術週刊將會為大家介紹最新的PG技術與動態、預告活動、最熱問答、直播教程等,歡迎大家訂閱PostgreSQL技術週刊和關注P

java中一個物件賦為null時發生了什麼

比如下面的程式碼 String[] arr = new String[10]; arr=null; 將arr這個引用置空,不指向任何物件。 上面new的那個陣列物件,則沒有任何引用指向它,垃圾回收器可以回收此物件。 java中物件引用放在棧中,

select2 外掛新增選項 設定預設

1:使用ajax獲取資料   $('selectid').select2({     ajax: { url: "https://api.github.com/search/repositories", dataType: 'json', data: function (p

mysql單表多timestamp報錯#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

column 但是 cor 選項 rec bsp 單表 correct ini 一個表中出現多個timestamp並設置其中一個為current_timestamp的時候經常會遇到#1293 - Incorrect table definition; there can b

mysql報錯:SQLSTATE[42000]: Syntax error or access violation: 1101 BLOB/TEXT column ‘rule’ can’t have a default value

多次遇到這個問題了,今天特意記錄一下: SQLSTATE[42000]: Syntax error or access violation: 1101 BLOB/TEXT column 'city' can't have a default value  解決辦法: windows在my.in

mysql安裝提示:TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_ti

centos6 安裝 mysql5.6 有異常提示:TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see doc

關於DB2新增column_new 和修改原column_old預設default value的情況

 1.新增列有預設值,不為空,則表中該列資料會自動補全。 ALTER TABLE AA_TEST ADD COLUMN column_new_a int WITH DEFAULT 1; ALTER T

there can be only one TIMESTAMP column with CURRENT_TIME in DEFAULT or ON UPDATE clause

         [Err] 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURREN

關於在SQL語句中記錄新增時間和修改時間的簡單用法:invalid default value for create_time

最近看到別人的專案中,資料庫中加入了建立時間和修改時間,感覺這個挺實用,就想建立一個demo試試怎麼用,查詢之後發現修改時間使用的是timestamp欄位格式,資料庫會根據當前時間,自動處理,不需要在SQL語句中設定,建立時間為datetime,預設值是CURR

Default value for parameters with a class type hin

php7 right xxx int ont row ron null clas 今天迷之報了個錯誤,本來在另一條開發機上好好的,結果換了一臺新的開發機就錯誤了,錯誤如下: PHP Fatal error: Default value for parameters wit

Error updating database. Cause: java.sql.BatchUpdateException: Field 'id' doesn't have a default value

code update 解決方法 ast .bat type int exc database 異常信息 ### Error updating database. Cause: java.sql.BatchUpdateException: Field ‘id‘ does

mysql添加DATETIME類型字段導致Invalid default value錯誤的問題

int etime time incr .com 支持 default red creat 執行sql如下: CREATE TABLE `qcloud_sms_template` ( `id` int(11) unsigned NOT NULL AUTO_INCRE

mysql 多個timestamp 錯誤:there can be only one TIMESTAMP column with CURRENT_TIMESTAMP

post div blog primary bsp pos mule ins one mysql 5.6.5以下的版本不支持多個timestamp同時設為default current_timestamp 替代方式是使用trigger CREATE TABLE `exam

Mysql Field * doesn't have a default value解決方法

mysq tps 5.0 現在 log 數據類型 ins 處理方法 all MySQL 5中,出現錯誤提示: Field ‘id‘ doesn‘t have a default value www.2cto.com 解決方法一: 打開my.ini,查找

java.sql.SQLException: Field 'id' doesn't have a default value(用eclipse操作數據庫時報了這種奇怪的錯誤)的原因與解決方法

sql microsoft java except body class 操作數 解決方法 family 1、錯誤原因 由於id在數據庫表中是作為主鍵,但是在插入的過程中,沒有給予數值,並且沒有讓其自增 2、解決辦法 修改數據庫表中的id,讓

MySql Field '*' doesn't have a default value問題

根據 text bsp 延伸 沒有 not OS 報錯信息 pos 1、問題: 寫了個註冊頁面,在本地服務器沒有報錯,上傳到空間之後出現了這個問題。 字面上來看是某個字段沒有設置默認值。 根據提示找到這條sql語句 `integral` var

Invalid default value for 'time'

ans 去掉 回話 進行 qss -a eat -s ini 現象:MySQL5.7版本之後,date, datetime類型設置默認值"0000-00-00",出現異常:Invalid default value for ‘time‘ 原因:在命令行窗口查看當前的sql_