ALTER TABLE TableName DROP CONSTRAINT ForeignKey_name

解决方案 »

  1.   

    sp_helpconstraint
    返回一个列表,其内容包括所有约束类型、约束类型的用户定义或系统提供的名称、定义约束类型时用到的列,以及定义约束的表达式(仅适用于 DEFAULT 和 CHECK 约束)。语法
    sp_helpconstraint [ @objname = ] 'table'
        [ , [ @nomsg = ] 'no_message' ]参数
    [@objname =] 'table'返回其约束信息的表。指定的表对于当前数据库必须是本地的。table 的数据类型为 nvarchar(776),无默认值。[@nomsg =] 'no_message'是打印表名的可选参数。no_message 的数据类型为 varchar(5),默认值为 msg。nomsg 表示取消打印。 返回代码值
    0(成功)或 1(失败)结果集
    如果 sp_helpconstraint 参与到主键中,则它显示按降序索引的列。降序索引列将在结果集中列出,在其名称后带有减号 (-)。默认值(升序索引列)将仅按名称列出。注释
    执行 sp_help table 时将报告有关指定表的所有信息。若要仅查看约束信息,请使用 sp_helpconstraint。 权限
    执行权限默认授予 public 角色。示例
    下面的示例显示 authors 表的所有约束。USE pubs
    EXEC sp_helpconstraint authors
      

  2.   

    --创建测试环境
    create table A
    (
      ID int foreign key references B(ID)
    )
    create table B
    (
      ID int primary key
    ) --测试
    create table #
    (
      PKTABLE_QUALIFIER sysname,
      PKTABLE_OWNER     sysname,
      PKTABLE_NAME      sysname,
      PKCOLUMN_NAME     sysname,
      FKTABLE_QUALIFIER sysname,
      FKTABLE_OWNER     sysname,
      FKTABLE_NAME      sysname,
      FKCOLUMN_NAME     sysname,
      KEY_SEQ           int,
      UPDATE_RULE       int,
      DELETE_RULE       int,
      FK_NAME           sysname,
      PK_NAME           sysname,
      DEFERRABILITY     int
    )
    insert # exec sp_fkeys B
    declare @sql varchar(1000)
    set @sql=''
    select @sql=@sql+' alter table A drop constraint '+FK_NAME from # where FKTABLE_NAME='A'
    exec(@sql)--删除测试环境
    drop table #
    drop table B,A