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. 『Python』matplotlib实现GUI效果

    1. 类RadioButtons的使用方法 类似单选框 import numpy as np import matplotlib.pyplot as plt import matplotlib as ...

  2. github注册教程最新版(十年程序员保姆级教程)

    您可以在墨抒颖的网站体验本文章的纯净版 准备 拥有一个可以接受信息的邮箱即可 开始 点击github官网github step1.进入注册页面 点击Sign Up进入注册流程 step2.输入邮箱 这 ...

  3. mysql8.0.20安装配置教程

    mysql配置安装教程 1.下载mysql8.0.20安装包 下载地址: https://dev.mysql.com/downloads/mysql/.找到安装包后下载.(官网为英文,如果看不懂的小伙 ...

  4. 感恩笔记之SQL语句操纵数据集基本功能模板

    SQL查询_基本功能 一 SQL语句整体架构 SELECT --1 查询数据表 INTO --2 新建数据表 FROM --3 查询数据表 WHERE --4 筛选数据表 ORDER BY --5 排 ...

  5. Arcscene教程

    ​ ​ ​ ​ ​ ​ ​ ​ ​ ​​ ​ 筛选​ ​ ​ ​ ​ ​ ​ ​ 看不清的话可以进行如下操作:右键-->属性-->符号系统-->把高程前面的对号取消-->添加- ...

  6. 七牛云的 python sdk 是如何 批量删除资源的

    今天做项目的时候用到七牛云,关于对资源的操作是在后端做的,用的SDK,但是,在网上没找到详细的解析,官方文档也没有太详细的解说,所以无奈只好看下源码 这里做一下简单的记录 from qiniu imp ...

  7. Python中生成器的理解

    1.生成器的定义 在Python中一边循环一边计算的机制,称为生成器 2.为什么要有生成器 列表所有的数据都存在内存中,如果有海量的数据将非常耗内存 如:仅仅需要访问前面几个元素,那后面绝大多数元素占 ...

  8. C 字符串相关的库函数

    字符串操作函数 size_t strlen( char *string ); 返回字符串长度 char* strcpy( char *dst, char const *src ); 将src复制到ds ...

  9. OutOfMemoryException异常解析

    一.概述 在国庆休假快结束的最后一天晚上接到了部门老大的电话,某省的服务会出现崩溃问题.需要赶紧修复,没错这次的主角依旧是上次的"远古项目"没有办法同事都在休假没有人能帮忙开电脑远 ...

  10. C++ 与 Visual Studio 2019 和 WSL(三)

    头文件 如果不小心修改了 Linux C/C++ 标准头文件,可以下面这样操作进行恢复: 项目 → 重新扫描解决方案