0

我正在尝试从 Oracle 表中删除数据。我今天已经上传了数据,但没有日期列,所以我无法过滤和删除。我必须找到如何在表格中获取今天上传的数据,然后按该数据过滤并删除。

我想要这样的东西:

delete from mytable
where  uploaded_date = trunc(sysdate)

我正在使用蟾蜍。

谢谢

4

1 回答 1

1

我认为您想及时返回yesterday表格数据。如果是这样,您可以使用Flashback TableOracle DB 的操作,前提是

  • 您的数据库版本至少为10g.
  • 您必须已被授予FLASHBACK ANY TABLE系统特权,或者您必须FLASHBACK对表具有对象特权。
  • 您必须在该表上具有SELECTINSERTDELETEALTER特权。
  • 保留在撤消表空间中的撤消信息必须及时回溯,以满足指定的目标时间点或SCN操作FLASHBACK TABLE。(对于此选项,您可以咨询您的 DBA)。
  • 必须在您为其发出FLASHBACK TABLE语句的表上启用行移动。您可以使用以下语句启用行移动:

    SQL> ALTER TABLE mytable ENABLE ROW MOVEMENT;

但如果尚未启用,请不要使用这句话来 ALTER 表,因为您的撤消数据会因发出 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操作的默认设置是禁用表上的触发器)。

重要说明:在应用闪回表操作之前,您应该将备份作为CREATE TABLE mytable_ AS SELECT * FROM mytable;

于 2018-01-14T16:35:48.323 回答