人事表(staff_id staff_name)
表crm_chance,crm_service,crm_payout,crm_pact,crm_lr都有字段STAFF_ID,
当删除人事表中的一条记录时,如何判断其他表中是否存在,如果存在,不能删除,反之可以.

解决方案 »

  1.   

    DELETE A FROM 人事表 A
    WHERE NOT EXISTS(SELECT 1 FROM crm_chance WHERE STAFF_ID=A.STAFF_ID)
    AND NOT EXISTS(SELECT 1 FROM crm_service WHERE STAFF_ID=A.STAFF_ID)
    AND NOT EXISTS(SELECT 1 FROM crm_pact WHERE STAFF_ID=A.STAFF_ID)
    AND NOT EXISTS(SELECT 1 FROM crm_lr WHERE STAFF_ID=A.STAFF_ID)
      

  2.   


    表crm_chance,crm_service,crm_payout,crm_pact,crm_lr都有字段STAFF_ID, 
    这些表的STAFF_ID字段
    都要参照人事表吧,人事表是主表吧   人事表(staff_id staff_name) 在表crm_chance,crm_service,crm_payout,crm_pact,crm_lr 上建外键引用人事表的staff_id就行
      

  3.   

    是啊,将STAFF_ID设为表crm_chance,crm_service,crm_payout,crm_pact,crm_lr 的外键,系统会自动维护的,不让删除,这是最好的方法,没有必要区写其它语句,所有的管理让SQL SERVER自己来
      

  4.   

    谢谢大家,设置外键是不是在表的"关系"中设置,如果表staff的字段staff_id对应crm_chance中的chance_man,chance_operman,应该怎么建,还有就是但用户在删除时,如果不能删除,返回值,给用户提示"其他表正在使用,不能删除"
      

  5.   


    DELETE A FROM 人事表 A
    WHERE NOT EXISTS(SELECT 1 FROM crm_chance WHERE STAFF_ID=A.STAFF_ID)
    AND NOT EXISTS(SELECT 1 FROM crm_service WHERE STAFF_ID=A.STAFF_ID)
    AND NOT EXISTS(SELECT 1 FROM crm_pact WHERE STAFF_ID=A.STAFF_ID)
    AND NOT EXISTS(SELECT 1 FROM crm_lr WHERE STAFF_ID=A.STAFF_ID)
      

  6.   

    谢谢大家,如果用
    WHERE NOT EXISTS(SELECT 1 FROM crm_chance WHERE STAFF_ID=A.STAFF_ID) 
    AND NOT EXISTS(SELECT 1 FROM crm_service WHERE STAFF_ID=A.STAFF_ID) 
    AND NOT EXISTS(SELECT 1 FROM crm_pact WHERE STAFF_ID=A.STAFF_ID) 
    AND NOT EXISTS(SELECT 1 FROM crm_lr WHERE STAFF_ID=A.STAFF_ID)
    是相当的慢.有没有更方便面的方法,同时,会在前台提示用户"不能删除"