当前数据库的所有字段都保留在syscolumns里面。
syscolumns (
name sysname, --字段名称
id int, --该字段所属的表的ID
xtype tinyInt, --该字段类型,关联sysTypes表
length smallint, --该字段物理存储长度
...
)
使用方法是:
Select name from syscolumns Where ID=OBJECT_ID('表名')
或者做为一个判断的条件:
Select 1 from syscolumns Where ID=OBJECT_ID('表名') and name='(列名)'。
我的实例:(为stu表添加一个stu_nm字段)
if exists(select 1 from syscolumns where id=object_id('stu') and name='stu_nm')
alter table stu alter column stu_nm int null
else
alter table stu add stu_nm int null
go
以上程序在运行多次也不会出现系统错误,所以在发布使用时特别的方便。
另有:
ncsyscolumns:包括id、name、number
syscolumns:包括id、colid、number
select * from yourdb.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
KEY_COLUMN_USAGE的结构
列名 数据类型 描述
CONSTRAINT_CATALOG nvarchar(128) 约束限定符
CONSTRAINT_SCHEMA nvarchar(128) 约束所有者名称
CONSTRAINT_NAME nvarchar(128) 约束名
TABLE_CATALOG nvarchar(128) 表限定符
TABLE_SCHEMA nvarchar(128) 表所有者名称
TABLE_NAME nvarchar(128) 表名
COLUMN_NAME nvarchar(128) 列名
ORDINAL_POSITION int 列顺序位置
sysconstraints也是系统表。
结构
列名 数据类型 描述
constid int 约束号。
id int 拥有该约束的表 ID。
colid smallint 在其上定义约束的列 ID,如果是表约束则为 0。
spare1 tinyint 保留。
status int 位图指示状态。可能的值包括:
1 = PRIMARY KEY 约束。
2 = UNIQUE KEY 约束。
3 = FOREIGN KEY 约束。
4 = CHECK 约束。
5 = DEFAULT 约束。
16 = 列级约束。
32 = 表级约束。
actions int 保留。
error int 保留。