sybase 设置默认值_获取数据库所有列以及列的类型是否为空是否为默认值是否为主键...

这篇博客主要介绍了如何通过SQLServer的内置存储过程来总结和理解表的结构,包括字段名称、是否可为空、默认值、主键信息以及数据类型长度。同时,文章探讨了如何利用存储过程来判断字段是否为主键,并详细展示了数据类型的表示方式。
摘要由CSDN通过智能技术生成

通过各种查资料,并且阅读sqlserver自带的存储过程总结出来的

SELECT DISTINCT c.name AS tablename, a.name,a.is_nullable,dbo.GetRemoveParentheses(d.text) AS defaultvalue,

CASE WHEN (a.name = index_col (c.name, f.index_id, 1) or

a.name = index_col (c.name, f.index_id, 2) or

a.name = index_col (c.name, f.index_id, 3) or

a.name = index_col (c.name, f.index_id, 4) or

a.name = index_col (c.name, f.index_id, 5) or

a.name = index_col (c.name, f.index_id, 6) or

a.name = index_col (c.name, f.index_id, 7) or

a.name = index_col (c.name, f.index_id, 8) or

a.name = index_col (c.name, f.index_id, 9) or

a.name = index_col (c.name, f.index_id, 10) or

a.name = index_col (c.name, f.index_id, 11) or

a.name = index_col (c.name, f.index_id, 12) or

a.name = index_col (c.name, f.index_id, 13) or

a.name = index_col (c.name, f.index_id, 14) or

a.name = index_col (c.name, f.index_id, 15) or

a.name = index_col (c.name, f.index_id, 16))

THEN

1

ELSE

0

END

AS isPrimary

,

CASE a.precision

WHEN 0

THEN CASE a.is_ansi_padded

WHEN 1

THEN CONVERT(NVARCHAR(15), b.name + '('

+ CONVERT(NVARCHAR(10), a.max_length) + ')')

WHEN 0 THEN b.name

END

ELSE CASE a.scale

WHEN 0 THEN b.name

ELSE b.name + '(' + CONVERT(NVARCHAR(10), a.precision) + ','

+ CONVERT(NVARCHAR(10), a.scale) + ')'

END

END AS typelength

FROM sys.columns a

LEFT JOIN sys.types b ON a.system_type_id = b.system_type_id

AND a.user_type_id = b.user_type_id

INNER JOIN sysobjects c ON c.id = a.object_id

LEFT JOIN syscomments d ON d.id = a.default_object_id

INNER JOIN sys.key_constraints e ON e.parent_object_id = a.object_id

INNER JOIN sys.indexes f ON e.unique_index_id = f.index_id

WHERE c.xtype = 'u' AND f.is_primary_key = 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值