我正在尝试从Oracle表中删除数据。我今天上传了数据,但没有日期列,因此我无法按此过滤并删除。我必须找到如何获取今天在表中上传的数据,然后按此过滤并删除。
我想要这样的事情:
delete from mytable
where uploaded_date = trunc(sysdate)
我正在使用Toad。
由于
答案 0 :(得分:1)
我想你想及时回到yesterday
获取你的表格数据。如果是这样,您可以使用Oracle DB的Flashback Table
操作,
10g
。FLASHBACK ANY TABLE
系统权限,或者您必须拥有该表的FLASHBACK
对象权限。 SELECT
,INSERT
,DELETE
和ALTER
权限。SCN
FLASHBACK TABLE
操作。 (对于此选项,您可以咨询您的DBA)。要为您发出FLASHBACK TABLE
语句的表启用已行活动。您可以使用以下语句启用行移动:
SQL> ALTER TABLE mytable ENABLE ROW MOVEMENT;
但如果尚未启用,请不要使用此句来改变 表,因为您的撤消数据通过发出DDL而丢失。在这种情况下 您可以使用 闪回查询 来恢复
select * from mytable as of timestamp timestamp '2018-01-14';
您可以通过发布(今天的日期是2018-01-14 )回到昨天的数据:
SQL> FLASHBACK TABLE mytable TO TIMESTAMP
TO_TIMESTAMP('2018-01-14 00:00:00','YYYY-MM-DD HH:MI:SS')
ENABLE TRIGGERS;
如果您的表没有任何触发器,那么您最后可以省略ENABLE TRIGGERS
部分(FLASHBACK TABLE
操作的默认值是针对要禁用的表上的触发器)。 / p>
重要提示:在应用闪回表操作之前,您应该这样做 备份为
CREATE TABLE mytable_ AS SELECT * FROM mytable;