1.用一条sql语句同时删除两张表的某条数据(不要有级联删除)。
2.用一条sql语句同时向两个结构相同的表中插入数据不用触发器,存储过程这样的sql语句可以写么

解决方案 »

  1.   

    多表插入用9i就可以实现,但多表删除好象Oracle没有这种sql支持
    INSERT ALL
          INTO sales (prod_id, cust_id, time_id, amount_sold)
          VALUES (product_id, customer_id, weekly_start_date, sales_sun)
          INTO sales (prod_id, cust_id, time_id, amount_sold)
          VALUES (product_id, customer_id, weekly_start_date+1, sales_mon)
          INTO sales (prod_id, cust_id, time_id, amount_sold)
          VALUES (product_id, customer_id, weekly_start_date+2, sales_tue)
          INTO sales (prod_id, cust_id, time_id, amount_sold)
          VALUES (product_id, customer_id, weekly_start_date+3, sales_wed)
          INTO sales (prod_id, cust_id, time_id, amount_sold)
          VALUES (product_id, customer_id, weekly_start_date+4, sales_thu)
          INTO sales (prod_id, cust_id, time_id, amount_sold)
          VALUES (product_id, customer_id, weekly_start_date+5, sales_fri)
          INTO sales (prod_id, cust_id, time_id, amount_sold)
          VALUES (product_id, customer_id, weekly_start_date+6, sales_sat)
    SELECT product_id, customer_id, weekly_start_date, sales_sun,
          sales_mon, sales_tue, sales_wed, sales_thu, sales_fri, sales_sat
    FROM sales_input_table;
      

  2.   


    这是9i为了占领BI市场而推出的支持ETL的特性之一,上面的写法使用的是无条件多表,还有条件分支的多表,实现类似ETL工具中的ROUTER特性
      

  3.   

    String sql="delete table1,table2 from table1 LEFT JOIN table2  ON table1.id = table2.id where table1.id='1'";说明:table1的外键是id,id又是table2的主键