一条sql语句可以同时插入,删除两张表的数据么,怎么写(不用触发器,存储过程)

时间:2022-12-09 05:57:19
1.用一条sql语句同时删除两张表的某条数据(不要有级联删除)。
2.用一条sql语句同时向两个结构相同的表中插入数据

不用触发器,存储过程

这样的sql语句可以写么

13 个解决方案

#1


至少也要用oracle12G吧

#2


我感觉不行

#3


太有难度了,弄不来``````

#4


引用 1 楼 hebo2005 的回复:
至少也要用oracle12G吧

同意

#5


没见过这样的操作  呵呵

#6


如果第二张表是第一张的快照或许可以

#7


多表插入用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;

#8


ding xia

#9


引用 7 楼 yonghengdizhen 的回复:
多表插入用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) 


没试过这种,看上去很强大,先学习

#10


引用 9 楼 nwao7890 的回复:
引用 7 楼 yonghengdizhen 的回复:
多表插入用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,…


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

#11


我也想知道解决方法,看看是如何删除的。呵呵

#12


String sql="delete table1,table2 from table1 LEFT JOIN table2  ON table1.id = table2.id where table1.id='1'";

说明:table1的外键是id,id又是table2的主键

#13


还是不行好不

#1


至少也要用oracle12G吧

#2


我感觉不行

#3


太有难度了,弄不来``````

#4


引用 1 楼 hebo2005 的回复:
至少也要用oracle12G吧

同意

#5


没见过这样的操作  呵呵

#6


如果第二张表是第一张的快照或许可以

#7


多表插入用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;

#8


ding xia

#9


引用 7 楼 yonghengdizhen 的回复:
多表插入用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) 


没试过这种,看上去很强大,先学习

#10


引用 9 楼 nwao7890 的回复:
引用 7 楼 yonghengdizhen 的回复:
多表插入用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,…


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

#11


我也想知道解决方法,看看是如何删除的。呵呵

#12


String sql="delete table1,table2 from table1 LEFT JOIN table2  ON table1.id = table2.id where table1.id='1'";

说明:table1的外键是id,id又是table2的主键

#13


还是不行好不