为了避免录入错误的数据,我们往往会给“列”加上各种约束条件。
运行以下代码能够实现“反向”的功能:给出表名和列名,就能找出约束名。
以下例句是找出给列“Class”设置的“默认值约束”的约束名。
表名'dbo.TStudent'和列名'Class'作为参数填入语句。
declare @name nvarchar(80)
--显式连接
select @name= b.name from syscolumns a,sysobjects b where a.id=object_id('dbo.TStudent' ) and b.id=a.cdefault and a. name='Class' and b.name like 'DF%';
select @name
--隐式连接(不建议使用,仅作记录)
select b.name from syscolumns a join sysobjects b on a.id=object_id('dbo.TStudent') and b.id= a.cdefault and a. name='Class'and b .name like 'DF%';
这个功能有什么用处呢?
给列添加约束的前提条件是列之前没有添加过约束。否则需要先删除之前的约束,再添加新的约束。
于是又带来一个新问题:之前的约束名是什么?
当然可以手动在数据库管理器的图形界面里查看。但本文给出了用代码实现的思路,这就可以实现设置约束的自动化:在设置约束之前先判断是否已经存在约束,如果有就删除后重设约束,没有就直接设置约束。
代码如下,适用于SQL Server: