delete t.*,t1.*,t2.* from tale_a t1, tale_a_b t, tale_b t2
我们提供的服务有:成都网站设计、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、嘉兴ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的嘉兴网站制作公司
where t1.id=t.aid and t.bid=t2.id and t1.你的删除条件
前提是 a表 a_b 表 b表 根据你的关联条件 inner join 能够查到内容
才会删除成功
t1.id=t.aid and t.bid=t2.id 替换成你的三个表的关联条件
楼主这个级联更新我才疏学浅给分为2步骤, 先更新A表。 在更新B表,一条语句更新2张表的写法我目前写不来。下面是我的sql 你看是否与你的要求一致。
--更新A表update A set A.tag=0 from A INNER JOIN ( --获取 多对多关系C表 并根据A表时间来获得需要更新的A表ID 和B表ID select c.Aid,c.Bid from C INNER JOIN A ON A.id = c.Aid INNER JOIN B ON B.id =c.Bid where A.TimegetDate() --根据某时间条件。 AND A.Tag =0 --A的Tag 为0 时 ) result
ON resule.Aid=A.ID
--更新B表update B set B.tag=0 from B INNER JOIN ( --获取 多对多关系C表 并根据A表时间来获得需要更新的A表ID 和B表ID select c.Aid,c.Bid from C INNER JOIN A ON A.id = c.Aid INNER JOIN B ON B.id =c.Bid where A.TimegetDate() --根据某时间条件。 AND A.Tag =0 --A的Tag 为0 时 ) result
ON resule.Bid=B.ID
create trigger update_id on a
for delete
as
Declare @qqlx_bid varchar(20)
Declare @qqlx_cid varchar(20)
--获得删除记录
select @qqlx_bid=bid,@qqlx_cid=cid from deleted
update b set bid=0 where bid=@qqlx_bid;
update c set cid=0 where cid=@qqlx_cid;
end
go
学生表:stu。选课表:sc。代码如下已测试通过。
select stu.sname,count(sc.cname) as '选修总数目' from stu,sc where stu.sid=sc.sid group by stu.sname order by count(sc.cname) desc limit 0,7