SQLserver有三张数据表,表A插入、修改、删除数据时 表B 表C 也会跟随,应该怎么写sql语句? 15

表A(序号,名称1,名称2,名称3,名称4)表B(序号,名称1,名称2,名称3,名称5,名称6)表C(序号,名称1,名称2,名称3,名称7,名称8)如:表A名称1哥哥名称... 表A (序号,名称1,名称2,名称3,名称4)
表B(序号,名称1,名称2,名称3,名称5,名称6)
表C(序号,名称1,名称2,名称3,名称7,名称8)
如:表A 名称1 哥哥 名称2 姐姐 名称3 弟弟 名称4 妹妹
当表A 名称1 哥哥 修改为爸爸时 表B 表C 也会自动更改
当表A 名称1 新增爷爷时 表B 表C 自动插入
当表A 名称1删除爷爷时 表B表C 也自动删除
当表A 名称1插入的数据重复时提示已存在
我是新手,请写清楚一些,谢谢!
展开
 我来答
匿名用户
2015-06-15
展开全部

2种办法都可以。

  1. 使用存储过程,比如说有过程insert_B, update_B,delete_B,insert_C, update_C,delete_C

    当操作A表时:

    对A表做插入时,判断是否插入成功,之后再调用insert_B和insert_C,如

    create procedure usp_Insert_A

    @A1 nvarchar(40),

    @A2 nvarchar(40)

    as

    begin

    declare @id nvarchar(40)

    set @id=''

    insert into A(ID,F1,F2) values(newid(),@A1,@A2)

    if exists(select 1 from A where F1=@A1 and F2=@A2)

    begin

    select @id=ID from A where F1=@A1 and F2=@A2

    end

    if len(@id)>0

    begin

    exec insert_B--参数...

    exec insert_C--参数...

    end

    end

  2. 在表A中写触发器

  3. 1.中未加入事务,当后续的B和C执行失败时,A是没有回退的,这个lz自行考虑。

神崎橙
2015-06-06 · TA获得超过251个赞
知道小有建树答主
回答量:593
采纳率:0%
帮助的人:339万
展开全部
写个存储过程吧,用事务来控制。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L子就这样
2015-06-06 · 超过21用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:24.1万
展开全部
这里要用到触发器的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
映幻路03
2015-06-05 · TA获得超过348个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:98.4万
展开全部
触发器 自己去看看 有思路自学更有收获
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式