我添的得一个列上有一个约束 就是默认0 但是这个约束是随机产生的 我不知道这个约束名。
alter table tbl_preconcertdetail add autonumber int not null default 0
现在我要修改这列类型为numeric(20,4)
alter table tbl_preconcertdetail alter column autonumber numeric(20,4)
但是报错
服务器: 消息 5074,级别 16,状态 1,行 1
对象 'DF__tbl_preco__auton__571DF1D5 ' 依赖于 列 'autonumber '
这个约束导致不能修改。
在帮助中查到可以在修改的时候停止这个约束,不知道要怎么用?
或者就算查不出,能够删除这列上的所有约束也行!
下面是例子:
alter table tbl_preconcertdetail add autonumber int not null default 0 添加一列生成一个默认0 的约束 约束名随机产生(不同客户约束名不同,我不能亲自去查)。
现在想用一条语句删除这个约束,但是又不知道约束名,怎么做?
请帮助我! 谢谢。
------解决方案--------------------
禁用并重新启用一个约束
下例禁用用于限制可接受的薪水数据的约束。WITH NOCHECK CONSTRAINT 与 ALTER TABLE 一起使用,以禁用该约束并使正常情况下会引起约束违规的插入操作得以执行。WITH CHECK CONSTRAINT 重新启用该约束。
CREATE TABLE cnst_example
(id INT NOT NULL,
name VARCHAR(10) NOT NULL,
salary MONEY NOT NULL
CONSTRAINT salary_cap CHECK (salary < 100000)
)
-- Valid inserts
INSERT INTO cnst_example VALUES (1, "Joe Brown ",65000)
INSERT INTO cnst_example VALUES (2, "Mary Smith ",75000)
-- This insert violates the constraint.
INSERT INTO cnst_example VALUES (3, "Pat Jones ",105000)
-- Disable the constraint and try again.
ALTER TABLE cnst_example NOCHECK CONSTRAINT salary_cap
INSERT INTO cnst_example VALUES (3, "Pat Jones ",105000)
-- Reenable the constraint and try another insert, will fail.
ALTER TABLE cnst_example CHECK CONSTRAINT salary_cap
INSERT INTO cnst_example VALUES (4, "Eric James ",110000)
------解决方案--------------------
利用命令来获取约束信息
sp_helpconstraint 表名
利用命令来删除约束
alter table 表名
drop constraint 约束名