代码分享-SQLServer设置表或者列的说明
在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设置表或者列的说明相关推荐
- rails设置表单默认值amp;amp;隐藏表单
需求: 用户没有登录时游客评论,需要游客输入用户名和评论内容:当用户已登录时,读取session获取用户名,隐藏输入用户名的表达,用户直接发表评论. 用户评论代码: <h2>Add a c ...
- mssql sqlserver 添加表注释和添加列注释
摘要: 下文讲述使用sql脚本对数据表或数据列添加注释(备注说明)的方法分享,如下所示: 实验环境:sql server 2008 r2 实现思路: 使用系统存储过程sys.sp_addextende ...
- sqlserver建表(设置主键 外键)约束
一.通过sql命令建表 create table dept (dept_id int primary key,dept_name nvarchar(100) not null,dept_address ...
- python代码大全表解释-Python中顺序表的实现简单代码分享
顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...
- 前端页面与form表单提交:代码分享
今天分享下"前端页面与form表单提交:代码分享"这篇文章,文中根据实例编码详细介绍,或许对大家的编程之路有着一定的参考空间与使用价值,需要的朋友接下来跟着云南仟龙Mark一起学习 ...
- sql+php修改mysql结构,MSSQL_修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,具体不废话了,请看下文代码 - phpStudy...
修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库 具体不废话了,请看下文代码详细说明吧. 向表中增加一个 varchar 列: ALTER TABLE distributors ...
- Airlaunch 快捷设置代码分享
Airlaunch 快捷设置代码分享 设置:prefs:root=SETTING 蜂窝网络:prefs:root=MOBILE_DATA_SETTINGS_ID WIFI:prefs:root=WIF ...
- antd 设置表头属性_解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐...
一.固定表头后表体列和表头不对齐 此问题可能在antd3.24.0版本之前都存在,反正3.16.2版本是存在这个问题的,如果是3.24.0之前的版本估计只能通过修改css样式解决. 按照官网说的: 1 ...
- mysql的四个默认数据库是什么版本,MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列。...
MySQL5.7数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列. 最初,服务器字符集和排序规则取决于启动mysqld时使用的选项.可以使用 --character-set-serv ...
最新文章
- c语言循环结构程序设计视频,第13讲:循环结构程序设计1
- lstm网络python代码实现
- MAC上最好用的免费全能音乐播放器VOX 2.6.5
- linux sudo 必须属于用户ID0,sudo:/usr/bin/sudo 务必属于用户 ID 0(的用户)并且设置 setuid 位...
- 1.1.0-简介-P7-Raft、Zab
- python版判断IP地址
- EFK 配置geo-ip落地实践
- AFNetworking Post Raw Data(JSON)
- Mblock使用时钟中断显示4段数码管的值
- 小米盒子显示未连接电脑连接服务器,小米盒子不能连接电脑的原因与解决办法...
- 阿里巴巴校招offer面经
- 赵伯平--警惕台湾的企业管理垃圾!
- excel链接隐藏工作表_自动隐藏Excel工作表
- 此计算机上无法找到autocad2017,电脑安装cad2017时提示错误:无法定位inf文件怎么办...
- 《鱿鱼游戏》开场了|谁才是影评人的御用写作工具
- 区块链正在颠覆的18个行业
- 深度学习_21天实战Caffe.pdf
- 开通我的技术博客,和以前关于生活的博客,分开旅行
- 人体红外传感器简明教程
- Python学习之-分支语句