sqlserver有时候需要修改一个字段的默认值,却发现修改(update)不了,也删除(delete)不了,排查发现,需要先删除原有的默认值约束,才行;步骤如下1、2、3。
若原来这个字段就没有默认值,则直接执行步骤3的sql;注意,需要显示声明默认值约束,否则系统会默认生成后缀为随机字符串的约束;不利于维护和无法做到见名知意。

1,删除原有字段上的默认值约束
use [yourDBName];--数据库名
declare @tableName nvarchar(100);--表名
declare @columnName nvarchar(100);--列名
declare @cnt nvarchar(100);
declare @sqlcmd nvarchar(1024);
set @tableName='yourTableName'
set @columnName='yourColumnName'
select @cnt= b.name from sysobjects b join syscolumns a on b.id = a.cdefault where a.id = object_id(@tableName) and a.name = @columnName
set @sqlcmd = 'ALTER TABLE '+ @tableName +' DROP constraint ' + @cnt;
exec sp_executesql @sqlcmd

2,删除该字段

ALTER TABLE [schema].[yourTableName] DROP column yourColumnName

3,重新添加字段

ALTER TABLE [dbo].[yourTableName] ADD yourColumnName int NOT NULL
CONSTRAINT DF_yourTableName_yourColumnName  DEFAULT ((-1));
EXEC sp_addextendedproperty N'MS_Description', N'字段注释', N'SCHEMA', N'dbo',N'TABLE', N'yourTableName', N'COLUMN', N'yourColumnName ';

4,关于sqlserver约束,这篇文章总结的不错
https://www.cnblogs.com/wy123/p/9205079.html#4431990

5,扩展:为什么要设置数据库字段 default  xxx  not null  ?

1,mysql存储null需要占用space来标识这个字段是不是存的null;如果default 空 那就完美了,因为空不占用space!

2,sqlserver:如果一个表字段中含有NULL的数据(NULL表示可以为任何值),那么,SQL Server在做数据库比较操作的时候,会使用三值逻辑(TRUE,FALSE,UNKNOWN),而不是平时的二值逻辑(TRUE,FALSE)。因此,在做数据库设计的时候,我们都要求尽量将表不要设置为NULL类型,如果业务要求需要有空值,我们尽量用实际的默认值来代替NULL(int我们用0,字符串可以是空串等),这样SQL Server在做比较运算就不会使用到相对复杂的三值逻辑,而采用二值逻辑。

SqlServer修改某个字段的默认值时的操作步骤的更多相关文章

  1. Django中 如何修改models字段的默认值

    场景描述: 在建表的时候,新闻表的内容简介字段,给的默认值是可以为空的,但是没有设置默认值为blank,那么,这种情况下,对于只有标题,没有内容简介的新闻来讲,发布之后,前端显示的内容简介位置是non ...

  2. SQLServer判断指定列的默认值是否存在,并修改默认值

    SQLServer判断指定列的默认值是否存在,并修改默认值 2008年10月21日 星期二 下午 12:08 if exists(select A.name as DefaultName,B.name ...

  3. mysql修改表中某个字段的默认值

    Mysql中用SQL增加.删除字段,修改字段名.字段类型.注释,调整字段顺序总结   在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改 ...

  4. MySQL设置字段的默认值为当前系统时间

    问题产生: 当我们在对某个字段进行设置时间默认值,该默认值必须是的当前记录的插入时间,那么就将当前系统时间作为该记录创建的时间. 应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,应该由数据 ...

  5. c#为字段设置默认值,以及构造函数初始化List对象。

    1.为字段设置默认值 /// <summary> /// 默认值 /// </summary> ; ; /// <summary> /// 页的大小 /// < ...

  6. mysql使用default来设置字段的默认值

    mysql创建表时,我们可以使用default来设置表字段的默认值,这样当向表中插入或添加数据时,如果没有为此字段设置任何值,则使用default默认值来填充该字段的值 在使用create table ...

  7. SQL 添加字段和默认值脚本

    --插入字段和默认值alter table Acc_WayBill add DeclaredValue nvarchar(50)goEXEC sys.sp_addextendedproperty @n ...

  8. SQL Server为字段添加默认值

    SQL Server为字段添加默认值 if not exists ( select * from sys.columns as c join sys.objects as o on c.default ...

  9. 二货Mysql中设置字段的默认值问题

    Mysql设置字段的默认值的确很落伍 1.不支持函数 2.只支持固定常量. 经常用到的日期类型,因为不支持getdate或者now函数,所以只能设置timestamp类型 而且还必须在默认值那个地方写 ...

随机推荐

  1. AT4519-[AGC032D]Rotation Sort【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/AT4519 题目大意 给出一个长度为\(n\)的排列,每次可以选择一个区间,然后花费\(A\)的代价向左旋转(最左边 ...

  2. IDEA破解方法:重新刷新到30天【支持正版】

    IDEA破解方法:重新刷新到30天[支持正版] 步骤: 导入plugins.zhile.io 进入File-->Settings-->Plugins 点设置(齿轮符号)-->Mana ...

  3. HTML模板标签解析

    HTML基本模板 1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 <head> 4 <meta cha ...

  4. 微服务Cloud整体聚合工程创建过程

    1.父工程创建及使用 使用idea开发工具,选择File-new- project ,在选项中选择Maven工程,选择jdk版本1.8,勾选maven-archetype-site,点击next,输入 ...

  5. 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)

    Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用.那么应该如何利用Prometheus对我们 ...

  6. Billu_b0x2内网渗透(多种提权方法)靶场-vulnhub

    个人博客阅读体验更佳 本次来试玩一下vulnhub上的Billu_b0x2,下载地址. 下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题.靶场推荐使用N ...

  7. python filter lambda 的使用

    lambda 匿名函数的使用 >>> a=lambda x : x in "1234567890.," >>> a("asd" ...

  8. 【UE4 C++】 UnrealPak 与 Pak 的制作、挂载、加载

    简介 通过 UnrealPak,可以将资源打包成 Pak 文件 Pak文件是UE4游戏生成的数据包文件. Pak 之前一般先有 Cooked 步骤,将资源烘焙为对应平台支持的资源 一般打包后的项目使用 ...

  9. vue3.x全局$toast、$message、$loading等js插件

    有时候我们需要使用一些类似toast,messge.loading这些跟js交互很频繁的插件,vue3.x这类插件的定义跟vue2.x插件稍大,而且相对变得复杂了一点点. 第一种.需要时创建,用完移除 ...

  10. NodeJs安装与环境配置

    https://blog.csdn.net/qq_43285335/article/details/90696126 https://www.cnblogs.com/liuqiyun/p/813390 ...