在一个sql oracle查询中将数据从一个表移动到另一个表,而不是pl sql

在一个sql oracle查询中将数据从一个表移动到另一个表,而不是pl sql,sql,oracle,Sql,Oracle,我遇到的情况是,在单个查询中,所选数据需要从一个表移动到其他相同的表。我不允许写pl/SQL块 insert into table1 value select * from table2 where id=1; delete from table2 where id=1; 我可以通过在单个事务中触发上述两个查询和异常处理来实现这一点 在这里,我需要确保完美的剪贴操作 可以在一个简单的SQL中实现吗 insert into table1 select * from table2 where id

我遇到的情况是,在单个查询中,所选数据需要从一个表移动到其他相同的表。我不允许写pl/SQL块

insert into table1 value select * from table2 where id=1;
delete from table2 where id=1;
我可以通过在单个事务中触发上述两个查询和异常处理来实现这一点

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

可以在一个简单的SQL中实现吗

insert into table1 select * from table2 where id=1;
delete from table2 where id=1;
在Oracle中,这是正确的方法。我刚刚删除了
value
,因为
values
在这里是不正确的,这里也不需要同义词


在一个事务中运行它是您想要的。这确保了剪切粘贴。没有其他方法可以做到这一点。即使您能够将其编写为一条语句,DB引擎也会执行这两条语句。请仅确保在单个事务中执行此操作。

我认为您提供的查询没有问题。如果您确保仅在delete语句之后发出commit,则所有操作都会在一个事务中执行

  • 表1中新插入的记录在 你发布了一个提交
  • 表2中已删除的记录在以下时间内保持可见: 其他人,直到您发出提交

您的意思是要在同一个SQL查询中执行插入和删除操作吗。如果是这样,那就不可能了。然而,我可以看到,由于语法问题,您上面发布的查询将不起作用。简单答案no.Fire 2 queries.iincorrect不正确。它只允许我保存编辑至少6个字符。请更新