除删除级联之外,从父级删除子元素的替代方法

时间:2015-02-02 09:22:41

标签: php sql

我有两张桌子:

  1. 仓库(父母)
  2. Subwarehouse(Child)
  3.   

    这是表格的创建

    //Create Warehouse Table
        function einv_createWarehouseTable($conn, $db_type){
            // Create SQL Statement To Create Table according to Database
            $sql = "
                    CREATE TABLE IF NOT EXISTS `einv_warehouse` (
                      `einv_wh_id` INT(11) NOT NULL AUTO_INCREMENT,
                      `einv_wh_code` VARCHAR(4) NOT NULL,
                      `einv_wh_name` VARCHAR(255) NOT NULL,
                      `einv_wh_desc` TEXT NOT NULL,
                      `einv_wh_remark` TEXT NULL,
                      PRIMARY KEY (`einv_wh_id`)
                    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
                    ";
    
    
        //Create Sub Warehouse Table
    function einv_createSubWarehouseTable($conn, $db_type){
        // Create SQL Statement To Create Table according to Database
        $sql = "
                CREATE TABLE IF NOT EXISTS `einv_subwarehouse` (
                  `einv_whs_id` INT(11) NOT NULL AUTO_INCREMENT,
                  `einv_whs_wh_id` INT(11) NOT NULL,                  
                  `einv_whs_code` VARCHAR(4) NOT NULL,
                  `einv_whs_name` VARCHAR(255) NOT NULL,
                  `einv_whs_desc` TEXT NOT NULL,
                  `einv_whs_remark` TEXT NULL,
                  PRIMARY KEY (`einv_whs_id`),
                  FOREIGN KEY (`einv_whs_wh_id`) REFERENCES einv_warehouse(`einv_wh_id`)
                ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
                ";
    

    我希望能够删除我的父表以及清除整个子数据。

    除了在删除级联上使用之外,我更喜欢替代方法,这会导致我改变表格。

    这很麻烦,因为这些编码需要丢弃和安装过程,这是很耗时的,因为有许多现有的表。

      

    tl; dr - 在选定的父ID为时删除所有子数据的另一种方法   

         

    除了使用删除级联

    这是我在function.php页面中的删除sql:

    base_executeSQL("DELETE FROM einv_warehouse WHERE einv_wh_id = " . $whid . "");
    
    base_executeSQL("DELETE FROM einv_subwarehouse WHERE einv_whs_id = " . $whid . "");
    

0 个答案:

没有答案