我正在尝试从 Oracle 表中删除数据。我今天已经上传了数据,但没有日期列,所以我无法过滤和删除。我必须找到如何在表格中获取今天上传的数据,然后按该数据过滤并删除。
我想要这样的东西:
delete from mytable
where uploaded_date = trunc(sysdate)
我正在使用蟾蜍。
谢谢
我认为您想及时返回yesterday
表格数据。如果是这样,您可以使用Flashback Table
Oracle DB 的操作,前提是
10g
.FLASHBACK ANY TABLE
系统特权,或者您必须FLASHBACK
对表具有对象特权。SELECT
、INSERT
、DELETE
和ALTER
特权。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;