在SQLServer数据库中,是可以设置表或者列的注释说明的,但是还比较复杂,而且分成新增和修改两个不同的
存储过程,这就意味着你可能得切换,当表本身已经有说明的时候,
你就必须调用更新的存储过程,否则的话就用新增的。具体的例子如下:标准方式使用如下:
 --新增时EXEC sys.sp_addextendedproperty @name = NULL, -- sysname@value = NULL, -- sql_variant@level0type = '', -- varchar(128)@level0name = NULL, -- sysname@level1type = '', -- varchar(128)@level1name = NULL, -- sysname@level2type = '', -- varchar(128)@level2name = NULL -- sysname--修改时EXEC  sys.sp_updateextendedproperty @name = NULL, -- sysname@value = NULL, -- sql_variant@level0type = '', -- varchar(128)@level0name = NULL, -- sysname@level1type = '', -- varchar(128)@level1name = NULL, -- sysname@level2type = '', -- varchar(128)@level2name = NULL -- sysname

这里提供一个存储过程,用于直接调用,无须考虑当前是新增还是更新。具体代码与参数说明如下:

--具体的参数以及说明如下,可用于对表,视图,以及列进行添加说明。
ALTER PROC [dbo].[AddOrUpdExtendedproperty]
(@Type NVARCHAR(100), -- 'Table/Column/View',视图或者表的时候填Table/Column都可以@Schema NVARCHAR(100), @TableName NVARCHAR(100),--表名/视图名@ColumnName NVARCHAR(100), --列名@Description NVARCHAR(200) --说明
)
AS DECLARE @Level1Type NVARCHAR(100) = (SELECT TOP 1[object].[type]  FROM sys.objects [object]INNER JOIN sys.schemas [schema] ON [object].[schema_id]= [schema].[schema_id]WHERE [schema].name + '.' + [object].name = @Schema + '.' + @TableName)IF @Level1Type  NOT IN ('U','V') BEGINRETURN;END IF @Level1Type = N'V' BEGINSET @Level1Type = N'View'ENDELSEBEGINSET @Level1Type = 'Table'END if object_id('tempdb..#tmp_DescDt') is not null    drop table #tmp_DescDtSELECT  SchemaName,TableName,TableDesc,TableDescExists,ColName,ColDesc,ColDescExists INTO #tmp_DescDt FROM (SELECT i.name AS SchemaName,d.name AS TableName,isnull(f.value,'') AS TableDesc,CASE WHEN f.Value IS NULL OR f.Value = NULL THEN 0 ELSE 1 END TableDescExists,a.name AS ColName,isnull(g.[value],'') AS ColDesc,CASE WHEN g.Value IS NULL OR g.Value = NULL THEN 0 ELSE 1 END ColDescExists FROM syscolumns aleft join systypes b on a.xusertype=b.xusertypeinner join sysobjects d on a.id=d.id  and (d.xtype='U' OR d.xtype = 'V') and  d.name<>'dtproperties'left join syscomments e on a.cdefault=e.idleft join sys.extended_properties   g on a.id=G.major_id and a.colid=g.minor_id  left joinsys.extended_properties fon d.id=f.major_id and f.minor_id=0LEFT JOIN sys.tables h ON  OBJECT_ID = d.idLEFT JOIN sys.schemas i ON h.schema_id= i.[schema_id]WHERE   i.name + '.' + d.name=@Schema + '.'+@TableName    --如果只查询指定表,加上此where条件,tablename是要查询的表名;去除where条件查询所有的表信息UNION ALL SELECT  i.name AS SchemaName,d.name AS TableName,isnull(f.value,'') AS TableDesc,CASE WHEN f.Value IS NULL OR f.Value = NULL THEN 0 ELSE 1 END TableDescExists,a.name AS ColName,isnull(g.[value],'') AS ColDesc,CASE WHEN g.Value IS NULL OR g.Value = NULL THEN 0 ELSE 1 END ColDescExists      FROM syscolumns aleft join systypes b on a.xusertype=b.xusertypeleft join sysobjects d on a.id=d.id  and (d.xtype='U' OR d.xtype = 'V') and  d.name<>'dtproperties'left join syscomments e on a.cdefault=e.idleft join sys.extended_properties   g on a.id=G.major_id and a.colid=g.minor_id  left joinsys.extended_properties fon d.id=f.major_id and f.minor_id=0LEFT JOIN sys.views h ON  OBJECT_ID = d.idLEFT JOIN sys.schemas i ON h.schema_id= i.[schema_id]where i.name + '.' + d.name= @Schema + '.'+@TableName    --如果只查询指定表,加上此where条件,tablename是要查询的表名;去除where条件查询所有的表信息) AS a  IF NOT EXISTS (SELECT 1 FROM sys.tables h INNER JOIN sys.schemas i ON h.schema_id= i.[schema_id] WHERE h.name = @TableName AND i.name = @Schema) AND @Level1Type = 'Table'BEGIN--表不存在RETURN;END IF ISNULL(@ColumnName,'') <> N'' AND @Type = N'Column' AND NOT EXISTS (SELECT 1 FROM #tmp_DescDt WHERE TableName = @TableName AND ColName = @ColumnName AND SchemaName = @Schema)BEGIN--列不存在RETURN;END SET @Description = ISNULL(@Description,'')IF @Type = N'Table' OR @Type = N'View'BEGINIF EXISTS (SELECT 1 FROM #tmp_DescDt WHERE ISNULL(TableDesc,'') <> @Description) BEGINIF EXISTS(SELECT 1 FROM #tmp_DescDt WHERE TableDescExists = 1)BEGIN--修改表描述EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@Description , @level0type=N'SCHEMA',@level0name=@Schema, @level1type=@Level1Type,@level1name=@TableNameENDELSEBEGIN--新增表描述EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@Description , @level0type=N'SCHEMA',@level0name=@Schema, @level1type=@Level1Type,@level1name=@TableNameEND END END IF @Type = N'Column'BEGINIF EXISTS (SELECT 1 FROM #tmp_DescDt WHERE ISNULL(ColDesc,'') <> @Description AND ColName = @ColumnName)BEGINIF EXISTS (SELECT 1 FROM  #tmp_DescDt WHERE ColName = @ColumnName AND ColDescExists = 1)BEGIN--修改列描述EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=@Description , @level0type=N'SCHEMA',@level0name=@Schema, @level1type=@Level1Type,@level1name=@TableName,@level2type=N'COLUMN',@level2name = @ColumnNameEND ELSEBEGIN--新增表描述EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=@Description , @level0type=N'SCHEMA',@level0name=@Schema, @level1type=@Level1Type,@level1name=@TableName,@level2type=N'COLUMN',@level2name = @ColumnNameEND END  END if object_id('tempdb..#tmp_DescDt') is not null    drop table #tmp_DescDtGO

代码分享-SQLServer设置表或者列的说明相关推荐

  1. rails设置表单默认值amp;amp;隐藏表单

    需求: 用户没有登录时游客评论,需要游客输入用户名和评论内容:当用户已登录时,读取session获取用户名,隐藏输入用户名的表达,用户直接发表评论. 用户评论代码: <h2>Add a c ...

  2. mssql sqlserver 添加表注释和添加列注释

    摘要: 下文讲述使用sql脚本对数据表或数据列添加注释(备注说明)的方法分享,如下所示: 实验环境:sql server 2008 r2 实现思路: 使用系统存储过程sys.sp_addextende ...

  3. sqlserver建表(设置主键 外键)约束

    一.通过sql命令建表 create table dept (dept_id int primary key,dept_name nvarchar(100) not null,dept_address ...

  4. python代码大全表解释-Python中顺序表的实现简单代码分享

    顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...

  5. 前端页面与form表单提交:代码分享

    今天分享下"前端页面与form表单提交:代码分享"这篇文章,文中根据实例编码详细介绍,或许对大家的编程之路有着一定的参考空间与使用价值,需要的朋友接下来跟着云南仟龙Mark一起学习 ...

  6. sql+php修改mysql结构,MSSQL_修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,具体不废话了,请看下文代码 - phpStudy...

    修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库 具体不废话了,请看下文代码详细说明吧. 向表中增加一个 varchar 列: ALTER TABLE distributors ...

  7. Airlaunch 快捷设置代码分享

    Airlaunch 快捷设置代码分享 设置:prefs:root=SETTING 蜂窝网络:prefs:root=MOBILE_DATA_SETTINGS_ID WIFI:prefs:root=WIF ...

  8. antd 设置表头属性_解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐...

    一.固定表头后表体列和表头不对齐 此问题可能在antd3.24.0版本之前都存在,反正3.16.2版本是存在这个问题的,如果是3.24.0之前的版本估计只能通过修改css样式解决. 按照官网说的: 1 ...

  9. mysql的四个默认数据库是什么版本,MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列。...

    MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列. 最初,服务器字符集和排序规则取决于启动mysqld时使用的选项.可以使用 --character-set-serv ...

最新文章

  1. dataframe 按条件删行_根据列值删除Pandas中的DataFrame行
  2. 关于多线程Thread.Stop()破坏原子性
  3. 常使用的webserver地址
  4. 使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法
  5. 一段挂起进程中所有线程的代码
  6. berkeley db java edition 源码,Berkeley DB Java Edition
  7. nodejs express使用HTML模板
  8. 趣文:如何成为Google软件工程师?(二)
  9. 产品经理技能树之 需求规范
  10. mysql驱动和url在5.7以上版本变化
  11. CCNA考试题库中英文翻译版及答案7
  12. Excel的高级筛选——数据匹配
  13. 数据分析初试:“梧桐杯”中国移动大数据应用创新大赛 - 智慧城市赛道
  14. oracle 11g Dataguard 之 Remote_Transport_user
  15. 中国互联网老总的经典妙语语录
  16. 循环神经网络中梯度爆炸的原因
  17. 前后端分离项目,请求头中包含Authorizaton:XX,但是后端getHeader(Authorizaton) 获取不到
  18. Point1:STM32根据BRR反推波特率
  19. 用户体验研究小结—以微信读书APP为例
  20. python基于win32实现梦幻西游手游后台鼠标键盘

热门文章

  1. 荣耀手环5自定义表盘设计
  2. 学人工智能数学要好吗?
  3. python excel处理数据的优点_python处理excel的优势是什么
  4. The Part-Time Parliament
  5. 交叉编译工具链建立与常识
  6. torbrowser浏览器的配置
  7. 为Apple Watch设计:素描设计
  8. 大连python培训费用-大连Python培训价格_Python培训哪家好
  9. 最大后验估计(MAP)------贝叶斯学派的法宝
  10. 中国大学mooc医学计算机与信息素养答案,医学计算机与信息素养