1、根据表名查询对象ID
SELECT OBJECT_ID('Production.Product')
结果:1429580131
不能作为输入参数:列名、约束名
能作为输入参数:表名
2、根据对象ID查询表名
SELECT OBJECT_NAME(1429580131)
结果:Product
一、syscolumns
1.根据表名查询表的所有列的名称
SELECT name FROM syscolumns WHERE id = OBJECT_ID('Production.Product')
syscolumns 为每个表和视图中的每列返回一行,并为数据库中的存储过程的每个参数返回一行。
syscolumns.id 列所属的表的对象ID、int型
syscolumns.name 列的名称、sysname型
2.根据表名、列名,查询列ID
SELECT colid FROM syscolumns WHERE id = OBJECT_ID('Production.Product') AND name = 'ProductNumber'
syscolumns.colid 列ID (列从1开始编号)、smallint型
syscolumns.name (似乎可以用字符串作为输入)
二、sysconstraints
包含的主要列:约束ID(constid),约束所属表的对象ID(id),约束所在列的列ID(colid)
三、sysobjects
1、根据表名和列名查询列上的约束
SELECT sysobjects.name ,sysobjects.xtype, sysobjects.id FROM sysobjects JOIN sysconstraints ON sysobjects.id = sysconstraints.constid WHERE sysobjects.parent_obj = OBJECT_ID('Production.Product') AND sysconstraints.colid IN ( SELECT colid FROM syscolumns WHERE id = OBJECT_ID('Production.Product') AND name = 'Weight' )
sysobjects.parent_obj 父对象的对象标识号。 例如,表ID(如果它是触发器或约束,父对象就是表ID)。
sysobjects.xtype:
C = check约束
D = 默认值或DEFAULT约束
F = FOREIGN KEY约束
P = 存储过程
PK = PRIMARY KEY
UQ = UNIQUE
四、后续版本的 Microsoft SQL Server 将删除这些功能。使用最新的 SQL Server 系统视图来代替。