我需要从stdnt表中删除一个特定的学生,并将该学生数据插入到一个新表stdnt_log中,包括'leaving_date'字段,该字段将是记录的删除日期
sql = "INSERT INTO stdnt_log SELECT rollno, name, grade, leaving_date FROM stdnt WHERE rollno = ?";
sql = "DELETE FROM stdnt WHERE rollno = ?";
如果可以/想要应用它,更简单的选项是更改stdnt
表并添加另一列:deactivation_date
:
alter table stdnt add deactivation_date date;
一旦有人停用,只需更新该列:
update stdnt set
deactivation_date = sysdate
where student_id = some_value;
活跃的学生将成为
select * from stdnt where deactivation_date is null;
实现起来更简单,维护起来更容易。缺点表会越来越大,但嘿,这是Oracle,它可以毫无问题地处理无数行。