MSSQL 2008 删除未知名字的约束

本文介绍了一种使用存储过程来删除SQL表中特定类型的约束的方法,并强调了在创建表时指定约束名称的重要性,以便于后续的管理和维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--删除某表的约束  参数说明
--@type 约束类型,包括:PK(主键约束),F(外键约束),D(默认约束),C(检查约束),UQ(唯一约束)
--@tableName  约束所属表
CREATE PROCEDURE proc_delConstraint(@type varchar(200),@tableName varchar(200))
AS 
BEGIN
DECLARE @keyName varchar(200)
SELECT @keyName=OBJECT_NAME(OBJECT_ID) FROM sys.objects 
WHERE type_desc LIKE '%CONSTRAINT' AND OBJECT_NAME(parent_object_id)=@tableName AND type=@type
EXEC('ALTER TABLE '+@tableName+' DROP CONSTRAINT ' +@keyName); 
END

--Eg:
exec proc_delConstraint 'C','tbl_t'


注:由于查询是查询某表的某个类型的约束,所以当该表有两个以上的该类型约束,则此方法失效。

 

上述方法有使用的范围,所以最好在创建表的时候指定约束名,这样在删除的时候可以直接根据名字删除:

CREATE TABLE tb_constraint
(
	empno INT CONSTRAINT pk_tb_cons2_empno PRIMARY KEY,

	ename VARCHAR(20) CONSTRAINT nn_tb_cons2_empno NOT NULL,

	email VARCHAR(60) CONSTRAINT un_tb_cons2_email UNIQUE,

	sal   INT CONSTRAINT ck_tb_cons2_sal CHECK(sal>1500),

	deptno INT CONSTRAINT fk_tb_cons2_dept REFERENCES tbl_t(id) 
)

 
ALTER TABLE tb_constraint
DROP CONSTRAINT un_tb_cons2_email


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值