# 删除 SmartMarket 公司的业务数据库中,有一个 orders 表,其结构主要是以下形态: ```postgresql create table orders ( id serial primary key, meta jsonb default '{}'::jsonb, content jsonb default '{}'::jsonb, created_at timestamp default now(), deal boolean ) ``` 有一个业务系统会实时的将已经成交(deal 字段为 true)的订单数据转储,现在我们仅需要一个清理 程序,将已经成 交的数据从 orders 表删除并记录被删除的数据id。下面哪个操作是对的? ## 答案 在一个独立的定时任务中执行 ```postgresql delete from orders where deal returning id; ``` 并记录id ## 选项 ### A 在一个独立的定时任务中执行 ```postgresql truncate orders; ``` ### B 在一个独立的定时任务中执行 ```postgresql delete from orders; ``` ### C 在一个独立的定时任务中执行 ```postgresql drop table orders; create table orders ( id serial primary key, meta jsonb default '{}'::jsonb, content jsonb default '{}'::jsonb, created_at timestamp default now(), deal boolean ); ``` ### D 建立视图 ```postgresql create view order_view as select id, meta, content, created_at from orders where not deal; ``` 并要求业务系统只能访问这个视图。 ### E 在一个独立的定时任务中执行 ```postgresql delete from orders where deal; ``` 并记录操作前后表中的最大 id