日期:2014-05-18  浏览次数:20482 次

求教关于修改列的属性!
我添的得一个列上有一个约束     就是默认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 约束名