sql存储过程通过ID删除两表中的数据。
发布网友
发布时间:2022-04-13 12:02
我来回答
共2个回答
热心网友
时间:2022-04-13 13:32
问题可不可以详细一点。。。。
假如你要删除两个表中ID相同的数据:思路是这样的,你应该先查找出两站表中所具有的相同ID,然后对这个ID集合记性遍历,分别从a,b两个表中删除相应的饿数据。具体的语法我记不清了,思路应该是这样的,也许会有更好的方法,我这个只做参考。
但是在删除的过程中,我们还需要考虑一个问题,我们要及删除a表中的数据又删除b表中的数据,如果在删除a中的某一条数据后,电脑死机了,b表中的数据没删掉,怎么办,这个问题我们可能需要处理一下。如果只是学习应该涉及不到这个问题,如果是做项目是要考虑的。追问如过这样 那怎么判断?
热心网友
时间:2022-04-13 14:50
CREATE OR REPLACE PROCEDURE del_p IS
CURSOR get_abid
IS
select a.id aid,b.id bid from UserInfo a inner join Users b on a.UserName=b.UserName
begin
FOR rec_abid IN get_abid
LOOP
delete a where id=rec_abid.aid;
delete b where id=rec_abid.bid;
END LOOP;
end;追问可以有点注释么, 我有点看不懂 谢谢
追答/* Formatted on 2011/09/22 15:35 (Formatter Plus v4.8.8) */
CREATE OR REPLACE PROCEDURE del_p --建立名为del_p 的过程
IS
CURSOR get_abid --简历名为get_abid的cursor 用来存放a表的id和b表的id.
IS
SELECT a.ID aid, b.ID bid
FROM userinfo a INNER JOIN users b ON a.username = b.username; --将a表的id命名为aid,b表的id命名为bid
BEGIN
FOR rec_abid IN get_abid --循环这个cursor get_abid 该结果可能不是一条所以要循环.
LOOP
DELETE userinfo
WHERE ID = rec_abid.aid; --删除userinfo 表中的id为aid的数据.
DELETE users
WHERE ID = rec_abid.bid; --删除users 表中的id为bid的数据.
END LOOP;
END;
sql存储过程通过ID删除两表中的数据。
假如你要删除两个表中ID相同的数据:思路是这样的,你应该先查找出两站表中所具有的相同ID,然后对这个ID集合记性遍历,分别从a,b两个表中删除相应的饿数据。具体的语法我记不清了,思路应该是这样的,也许会有更好的方法,我这个只做参考。但是在删除的过程中,我们还需要考虑一个问题,我们要及删...
sql 存储过程 删除一个表中一条数据的同时删除另一个表中对应ID的多条...
存储过程不能实现,要写一个触发器,假设这两个表是tb_1,tb_2,删除表一,然后同时删除表二的内容 表一下面触发器的正文如下:declare @ID int //声明一个局部变量 set @ID=(select ID from deleted) //deleted是系统提供的一张表 delete from 表2 where ID=@ID 呵呵,共同学习 ...
SQL 如何把两个表相关联的数据一同删除
其实你这个问题最好用数据库本身的外键解决。就是在子表建立指向父表的外键。当删除主表数据时,只要加上delete语句加上 on cascade,所有子表引用的数据就删除了。
SQL 语句删除问题同时删除两个表内关联的数据
1.用外键关联删除,把B表的uid设成外键关联A表的ID,并关联删除操作 2.用存储过程,用事务来处理实现;望采纳!
求oracle存储过程,同时删除两张表中的id相同的数据
1.创建临时表(或者创建个表也可以,用一次删一次)即中间表。2.取出两个表相同的ID记录,将ID插入中间表 3.对应中间表中的id,删险两表中的记录。4.清除中间表 方法二(要用游标、变量):1.建立游标,用游标取出两表相同ID记录,将ID放入变量。2.通过Loop,根每一个ID的变量对到删除两表中的...
sql语句从主表删除一条数据,并且把先关联的多个子表数据也删除
1.如果是编程实现,java框架hibernate的cascade可以模拟做到删主去重 2.表中设置好级联删除 这样设定好表后 可以实现删主去重 oracle为例 alter table AAA add constraint asd foreign key (BBB) references CCC(DDD) on delete cascade;3.新增delete的行级触发器 4.存储过程 包含多条delete语句,使用...
sql如何从两个关联的表中取出数据插入到另一个表?
1.首先准备两个数据表,如下图所示,具有相同的结构。2.然后在第一个数据表中插入一些数据。3.然后我们打开第二个数据表,您可以看到第二个表中没有数据。我们需要在第一个中插入数据。4.接下来,编写insert语句,注意这一次直接在insert之后用select获取数据。5.然后我们可以看到第二个数据表中...
SQL数据库怎么进行多表级联更新,求个存储过程
i存在,则将新值插入A2,A3,A4,A5的talbe1 --3、如果@no_d存在@no_i不存在,则删除A2,A3,A4,A5的talbe1对应的值 if exists(select 1 from A2.dbo.talbe1 where no = @no_d) and exists(select 1 from A2.dbo.talbe1 where no = @no_i)begin --修改A2数据库的表 end ...
SQL:查找出一张表里两条记录不相同的字段项和内容。在线等。
3SELECT * FROM testselect 'id1',[3] AS 数据1,[4] AS 数据2 from (SELECT id1,operation,groupid FROM testWHERE groupid IN (SELECT groupidFROM (SELECT DISTINCT groupid,id1FROM testGROUP BY groupid,id1) aGROUP BY groupidHAVING COUNT(groupid)>1))t1pivot(max(id1)for ...
如何用SQL语句实现将将两个表对比,将一个表中没有的数据插入另一个表...
--因为不清楚具体你的哪些表,大概写一下--方法1,数据量不是很大insert into A(...) select * from B where not exists (select 1 from B where A.id=B.id)--假设id是主键或者唯一索引--方法2,写存储过程,每一千条commit一次,这个只是思路,代码是一样的 ...