--删除某表的约束 参数说明
--@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