--查看sysobjects的信息
SELECT * FROM sysobjects
--查看表**约束
exec sp_helpconstraint score
在没有自定义constraint_name的情况下,首先需得到name的值,然后在删除。
--删除check的约束
declare @check varchar(100);
select @check=name from sysobjects where Parent_obj=object_id('score') and xtype='C';
if @check is not null
exec('alter table score drop ' + @check)
go
--删除约束默认值
Declare @default varChar(256);
Select @default=name from sysobjects where Parent_Obj=OBJECT_ID('score') and xtype='D';
if @default is not null
exec('Alter table score Drop '+ @default)
go
sysobjects
在sqlserver2005,sqlserver2008版本的数据库里,现在已经作为一个视图对象,在每一个数据库的系统视图中,都存在一个sys.sysobjects 视图对象。
sysobjects 重要字段解释:
sysObjects (
Name sysname, --object 名称
id int, --object id
xtype char(2), -- object 类型
type char(2), -- Object 类型(与xtype 似乎一模一样? 有点郁闷…)
uid smallint, -- object 所有者的ID
... --其他的字段不常用到。
)
注:需要解释的是 xtype 和type 是一模一样的,他的数据为:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程
该表中包含该数据库中的所有对象,如有那些表 存储过程 视图 等信息