解决方案 »

  1.   

    有外键约束的话用delete来删除,不能用truncate
      

  2.   

    这个我知道,但是delete有日志功能,级联删除之后,如果我再对这个表插入记录的话,那个ID会直接在之前的基础上继续递增。想要把记录全部删了,并且重置递增的话,就只能truncate,但是有外键约束的话,truncate不能执行。现在就是要先接触关联关系,再进行重置。
    求可以查询到关联表的语句
      

  3.   

    select *
    from sys.foreign_keys
    where name ='外键名';
      

  4.   

    SELECT
    T3.name[被引用字段]
    ,T5.name[引用它的表名]
    ,T4.name[引用它的字段]
    FROM
    SYS.foreign_keys T1
    JOIN SYS.foreign_key_columns T2 ON T1.object_id=T2.constraint_object_id
    JOIN SYS.SYSCOLUMNS T3 ON T2.referenced_object_id = T3.ID AND T2.referenced_column_id = T3.colid
    JOIN SYS.SYSCOLUMNS T4 ON T2.parent_object_id = T4.ID AND T2.parent_column_id = T4.colid
    JOIN SYS.SYSOBJECTS T5 ON T2.parent_object_id = T5.ID
    WHERE T1.referenced_object_id=OBJECT_ID('被引用表名')如版主所说,你试下
      

  5.   

    try this:
    SELECT * INTO #t FROM  OPENROWSET('SQLOLEDB','SERVER=.;uid=sa;pwd=sa;Database=NewPackOne', 'EXEC sp_fkeys Container') t --把链接参考换下
    SELECT PKTABLE_NAME '主表',PKCOLUMN_NAME '主表列',PK_NAME'主键名', FKTABLE_NAME'外键表', FKCOLUMN_NAME'外键表列', PK_NAME'外键名' FROM #t
      

  6.   

    本帖最后由 roy_88 于 2014-11-13 14:20:15 编辑