在一个sql oracle查询中将数据从一个表移动到另一个表,没有pl sql

时间:2017-11-22 12:18:39

标签: sql oracle

我有一种情况,需要将选定的数据从一个表移动到单个查询中的其他相同表。我不被允许编写pl / SQL块。

insert into table1 value select * from table2 where id=1;
delete from table2 where id=1;

我可以通过在单个事务和异常处理中触发两个查询来实现此目的。

在这里,我需要确保完美的剪切粘贴操作。

是否可以在一个简单的SQL中执行此操作?

2 个答案:

答案 0 :(得分:1)

insert into table1 select * from table2 where id=1;
delete from table2 where id=1;

这是在Oracle中执行此操作的正确方法。我刚刚删除value,因为values在此处不正确,您也不需要在这里使用同义词。

在一个事务中运行它是你想要的。这确保了切割糊状物。没有其他办法可以做到这一点。即使您能够将其写为一个语句,DB引擎也会执行这两个语句。请确保您在单笔交易中完成。

答案 1 :(得分:0)

我没有看到您提供的查询出现问题。如果您确定只在删除声明后发出提交,则会在一个事务中发生。

  • table1中新插入的记录直到其他人才可见 你发出一个提交。
  • table2中已删除的记录仍然可见 其他人,直到您发出提交。