假设现有两个表结构如下:customers表:(id,cname)orders表:(id,cid,order_info)在oracle中有个功能,删除表的同时,能把所有的外键引用约束删除。drop table customers cascade constraints;
这样,要删除customers表,就不需要先删除orders表了(尽管这么做在业务逻辑上不大对哈,但是这里是学习和探讨呵呵。)
我想请问一下,在sqlserver中有这个功能吗???

解决方案 »

  1.   

    楼主早。
    SQLSERVER中好象没有直接这样的功能,但是可以通过系统表,查出当前想要删除的主表有哪个外键约束,直接先把约束删除,再删除表即可。
    用下面的语句,很方便:
    select 'alter table '+object_name(fkeyid)+' drop constraint '+object_name(constid)+char(10) 
    from sysreferences 
    where object_name(rkeyid) = 'customers' --这里要写主表的表名,就是你想DROP的表
    得出的结果是:
    alter table orders drop constraint FK_customers_orders ;
    你直接执行这条语句,然后再执行
    DROP TABLE customers;
    即可。