求一条删除sql语句

我建了两个表,一个student表,一个score表,前者列有strId为主键,有name两个字段,后者有id为主键,stuId为外键,还有score三个字段,我想删除s... 我建了两个表,一个student表,一个score表,前者列有strId为主键,有name两个字段,后者有id为主键,stuId为外键,还有score三个字段,我想删除studnet表中的数据,可是他是却在score表中有外键约束,我想写一条语句删除student的数据同时删除score的有相同stuId的数据,就是一条语句同时删除两个表的两条数据,用什么方法啊?
谢谢大家 dong_xiaoyang说的级联确实好用 但我对amwih001的触发器更感兴趣 我想补充个问题 你给我写的触发器解决不了主外键关系 我写了个前出发器 但是每次用delete在删除的时候都只删除score中的数据而student中的数据怎么也删不掉了 是这种关系删除时不能用出发器吗 或者用别的方法 比如存储过程怎么写啊 谢谢大家了
展开
 我来答
amwih001
2009-12-13 · TA获得超过2.3万个赞
知道大有可为答主
回答量:1529
采纳率:100%
帮助的人:682万
展开全部
这个方法不错,触发器。就是当你删除student表的数据的时候让系统自动执行相应的Sql语句。
我用SqlServer的方式帮你写个(其实其他数据库也一样,差不多)
Create trigger trg_delete on student for delete
as
--在这里就把score表的中数据删除掉
delete from score where stuId=(select stuId from deleted) //deleted为系统临时表,后面的这段子查询就是获取到刚刚被删除掉的stuId。
go

但是你的两个表建有关系,删主表的时候必须把从表的对应数据删除掉。剩下的你想想把。。
ayhncn
2009-12-16 · TA获得超过109个赞
知道答主
回答量:71
采纳率:0%
帮助的人:64.2万
展开全部
CREATE TRIGGER double_delete
ON student
FOR DELETE
AS
BEGIN
delete score where stuid in(select student.stuid from deleted studnet)
END
GO
给你一个网站,参考参考:窗内网,上面有很多关于SQL Server的视频和论坛。

参考资料: 窗内网

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
好物杂货铺
2009-12-13 · 专注发布美妆护肤类好物推荐
好物杂货铺
采纳数:77 获赞数:285

向TA提问 私信TA
展开全部
级联删除和触发器都可以实现,不过级联删除还比较简单
用级联操作格式:
ALTER TABLE [dbo].[T_USERGROUP] ADD
CONSTRAINT [FK_T_USERGROUP_T_ACCTTEMPLATE] FOREIGN KEY
(
[ATNAME]
) REFERENCES [dbo].[T_ACCTTEMPLATE] (
[ATNAME]
) ON DELETE CASCADE
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
原耽是光
2009-12-12 · TA获得超过132个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:122万
展开全部
好像有个事件吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式