我有一种情况,需要将选定的数据从一个表移动到单个查询中的其他相同表。我不被允许编写pl / SQL块。
insert into table1 value select * from table2 where id=1;
delete from table2 where id=1;
我可以通过在单个事务和异常处理中触发两个查询来实现此目的。
在这里,我需要确保完美的剪切粘贴操作。
是否可以在一个简单的SQL中执行此操作?
答案 0 :(得分:1)
insert into table1 select * from table2 where id=1;
delete from table2 where id=1;
这是在Oracle中执行此操作的正确方法。我刚刚删除value
,因为values
在此处不正确,您也不需要在这里使用同义词。
在一个事务中运行它是你想要的。这确保了切割糊状物。没有其他办法可以做到这一点。即使您能够将其写为一个语句,DB引擎也会执行这两个语句。请确保您在单笔交易中完成。
答案 1 :(得分:0)
我没有看到您提供的查询出现问题。如果您确定只在删除声明后发出提交,则会在一个事务中发生。