请问 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
--但是这据说我语法错误,请帮我。谢谢

解决方案 »

  1.   

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

  2.   

    declare @s varchar(1000)
    set @s='ALTER TABLE tbl_preconcertdetail DROP CONSTRAINT @dname'
    EXEC(@s)
      

  3.   

    够快:)
    declare @s varchar(1000)
    set @s='ALTER TABLE tbl_preconcertdetail DROP CONSTRAINT '+@dname
    EXEC(@s)
      

  4.   

    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)-- 禁用约束,并插入大于100000的数
    ALTER TABLE cnst_example NOCHECK CONSTRAINT salary_cap
    INSERT INTO cnst_example VALUES (3,"Pat Jones",105000)-- 起用约束,并插入大于100000的数
    ALTER TABLE cnst_example CHECK CONSTRAINT salary_cap
    INSERT INTO cnst_example VALUES (4,"Eric James",110000)
    -----------------------------NOCHECK CONSTRAINT ------------------------------------
      

  5.   

    exec ('ALTER TABLE tbl_preconcertdetail DROP CONSTRAINT ' +@dname)
    这样执行试试...