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

alter table 命令帮助!
请问   alter   table   中我想删除一个默认值的约束
我用ALTER   TABLE   tbl_preconcertdetail   DROP   CONSTRAINT   约束名
但是如果约束名必须是我写的脚本查询出来的话,该怎么写呢?(因为每个客户的约束名我都是让她随机产生的)

一下我写的代码有错:

declare   @dname   sysname     --定义变量,存放约束名,可以正常运行

set   @dname=   (select   SysObjects.name   from
(select   SysColumns.id   from   SysColumns,SysObjects   where   SysColumns.name   =   'autonumber '   and   SysColumns.id=SysObjects.id   and   SysObjects.name= 'tbl_preconcertdetail ')   as   sys1,SysObjects
where   sys1.id=SysObjects.parent_obj   and   SysObjects.type= 'D ')
--查询出某表某列相应的约束名   如:DF__tbl_preco__auton__29572725可以正常运行

ALTER   TABLE   tbl_preconcertdetail   DROP   CONSTRAINT   @dname
--但是这据说我语法错误,请帮我。

谢谢


------解决方案--------------------
ALTER TABLE tbl_preconcertdetail DROP CONSTRAINT @dname
-->

exec( '
ALTER TABLE tbl_preconcertdetail DROP CONSTRAINT '+@dname
)


------解决方案--------------------
declare @s varchar(1000)
set @s= 'ALTER TABLE tbl_preconcertdetail DROP CONSTRAINT @dname '
EXEC(@s)
------解决方案--------------------
exec ( 'ALTER TABLE tbl_preconcertdetail DROP CONSTRAINT ' +@dname)
这样执行试试...