Java 删除数据库里面数据的同时把这条数据添加到令一张表中

陌路花开 2011-10-12 01:47:54
我现在有一个表messageReceived我想在这个表上做删除并且删除的同时把这条删除的数据添加到令一张表messageGarbage表中 那位大虾有写好的代码 帮帮我!!!
...全文
324 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
magic_han 2011-10-12
  • 打赏
  • 举报
回复
很明显这个问题要用触发器trigger来处理,可在pl/sql块里面来实现。参考代码
create or replace trigger del_ins
before delete on messageReceived
for each row
declare
begin
insert into messageGarbage(id,name,email,title,time,content)
values(:OLD.id,:OLD.name,:OLD.email,:OLD.title,:OLD.time,:OLD.content);
end;
11楼和15楼的兄弟好像把old写成new了。没记错的话这里应该用old。
programmerxiaocai 2011-10-12
  • 打赏
  • 举报
回复
删除的时候使用逻辑删除 不使用物理删除,然后把逻辑删除的数据插入到删除表中。
陌路花开 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 xrxhb001 的回复:]
有个简单的办法就是给数据库加一个状态标记status,删除的时候并不从数据库删除数据,而是把status字段的值修改一下。
[/Quote]
可是我不会给数据库加状态标记啊!!!
空指针 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 xrxhb001 的回复:]
有个简单的办法就是给数据库加一个状态标记status,删除的时候并不从数据库删除数据,而是把status字段的值修改一下。
[/Quote]
这个方法很好!
也可以在你删除的action里面的DELETE方法后添加个insert方法,就是insert到另外一张表格里面
这个方法挺实用的,不过建议楼主还是用001的方法
xrxhb001 2011-10-12
  • 打赏
  • 举报
回复
有个简单的办法就是给数据库加一个状态标记status,删除的时候并不从数据库删除数据,而是把status字段的值修改一下。
whf_08 2011-10-12
  • 打赏
  • 举报
回复
create or replace trigger insert_dc_sell
before delete on messageReceived
for each row
declare
begin
insert into messageGarbage(id,name,email,title,time,content)
values(:NEW.id,:NEW.name,:NEW.email,:NEW.title,:NEW.time,:NEW.content);
end insert_dc_sell;
陌路花开 2011-10-12
  • 打赏
  • 举报
回复
messageReceived表中删除的数据messageGarbage表接收
messageReceived表中字段(id,name,email,title,time,content)
messageGarbage表中字段一样 麻烦帮写下
wolf863292 2011-10-12
  • 打赏
  • 举报
回复
删除动作,还是要你自己写代码。
这个触发器的作用是,当表1的记录被删除后,在表2中插入表1刚刚删除的记录。

自己搜一下数据库触发器,了解一下大概用途即可。
whf_08 2011-10-12
  • 打赏
  • 举报
回复
after delete on ivr_call_client
错了,这个应该是
before delete on ivr_call_client

因为after 和:old对照; before 应该是:NEW
whf_08 2011-10-12
  • 打赏
  • 举报
回复
create or replace trigger insert_dc_sell
after delete on ivr_call_client
for each row
declare
begin
insert into dc_sell(ID,phone,result,selltime,operation)
values(:NEW.ID,:NEW.calltel,:NEW.state,:NEW.registerdate,:NEW.operation);
end insert_dc_sell;

就是这个嘛,ivr_call_client这个是你要删除的表,
dc_sell(ID,phone,result,argo,selltime,operation)这个是要插入的垃圾留言表,括号里是字段;
:NEW.calltel等,这些是你之前删除的留言的字段;

这样就ok啦,你删除留言表的时候就会自动往垃圾表里查数据了,你可以删一个试试的
cilen 2011-10-12
  • 打赏
  • 举报
回复
要是不会用,就是在DAO操作的时候,先取出来包装好成插入时候的Hibernate的对象,自己在后台操作中插入就好了吧,这样你熟悉SSH,应该就很简单了呀!
陌路花开 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 whf_08 的回复:]
页面上只管删,写歌触发器以后数据库会自己帮你做保存的
[/Quote]
那建立了触发器之后怎么才能知道第一个表已经进行了删除动作啊?
陌路花开 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 whf_08 的回复:]
页面上只管删,写歌触发器以后数据库会自己帮你做保存的
[/Quote]
不好意思 我是个新手 在问个比较白痴的问题 因为我没用过触发器 所以我不会建!!!
whf_08 2011-10-12
  • 打赏
  • 举报
回复
页面上只管删,写歌触发器以后数据库会自己帮你做保存的
陌路花开 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wolf863292 的回复:]
建个触发器就可以了。

create or replace trigger tr_aaa
after delete on messageReceived
for each row
declare

begin
INSERT INTO messageGarbage(id, name) VALUES (:old.id, :old.name);
end tr_aaa……
[/Quote]
请问 我用的是SSH框架写的 就是一个留言 一条留言不想要了 存到垃圾留言里面
whf_08 2011-10-12
  • 打赏
  • 举报
回复
为什么不触发器呀,很简单的,数据库自己就会做这工作,还不容易出问题
陌路花开 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wingson_shen 的回复:]
是基于什么环境的,JDBC。JPA还是其它?
[/Quote]
用SSH Javascript
wolf863292 2011-10-12
  • 打赏
  • 举报
回复
建个触发器就可以了。

create or replace trigger tr_aaa
after delete on messageReceived
for each row
declare

begin
INSERT INTO messageGarbage(id, name) VALUES (:old.id, :old.name);
end tr_aaa;
Fly_m 2011-10-12
  • 打赏
  • 举报
回复
触发器,数据库触发器,具体可以google哈
wingson_shen 2011-10-12
  • 打赏
  • 举报
回复
是基于什么环境的,JDBC。JPA还是其它?

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧