关于SQLServer 触发器的基础问题

fy_zhu93 2013-05-27 03:50:22
有三张无关联的表,都有一个相同的字段,三张表分别称为表1,表2,表3,
现在想要实现在删除表1对应该字段的某行数据后,删除表2,表3对应该字段的行。
这个触发器应该怎么写。菜鸟求教。
...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack15850798154 2013-05-28
  • 打赏
  • 举报
回复
有三张无关联的表,都有一个相同的字段,三张表分别称为表1,表2,表3, 现在想要实现在删除表1对应该字段的某行数据后,删除表2,表3对应该字段的行。 LZ 确认一下下面的例子是否是你需要的效果 如:表1.字段【NAME】 值为 JACK. 那么 如果删除表1.【NAME】值==JACK 那么通过触发器删除 表2.【NAME】值==JACK 和 表三.【NAME】值==JACK
jack15850798154 2013-05-28
  • 打赏
  • 举报
回复



IF OBJECT_ID('T_CSDN_ONE') IS NOT NULL
BEGIN
  DROP TABLE dbo.T_CSDN_ONE;
END
GO
CREATE TABLE T_CSDN_ONE
(
   ID INT IDENTITY(1,1) PRIMARY KEY,
   [NAME] VARCHAR(50),
   NUMBER INT
)


INSERT INTO dbo.T_CSDN_ONE
SELECT 'A',20
UNION ALL
SELECT 'B',20
UNION ALL
SELECT 'A',10
UNION ALL
SELECT 'A',5
UNION ALL
SELECT 'B',40
UNION ALL
SELECT 'B',10
SELECT * FROM dbo.T_CSDN_ONE


IF OBJECT_ID('T_CSDN_TWO') IS NOT NULL
BEGIN
   DROP TABLE dbo.T_CSDN_TWO;
END
GO
CREATE TABLE T_CSDN_TWO
(
   [NAME] VARCHAR(50),
   [SUMNUMBER] INT
)

INSERT INTO T_CSDN_TWO
SELECT 'A',35
UNION ALL
SELECT 'B',70
GO
CREATE TRIGGER TR_DELETE 
ON T_CSDN_ONE
AFTER DELETE
AS
BEGIN   
   UPDATE T_CSDN_TWO SET SUMNUMBER=SUMNUMBER-(SELECT ISNULL(SUM(NUMBER),0) FROM DELETED WHERE NAME=T_CSDN_TWO.NAME) 
END

DELETE T_CSDN_ONE WHERE ID IN (4,3,5)

SELECT * FROM dbo.T_CSDN_ONE
SELECT * FROM dbo.T_CSDN_TWO
fy_zhu93 2013-05-27
  • 打赏
  • 举报
回复
引用
用到delete表,删除表2,表3,where =delete.字段。
刚写了一下,还是不行,网上查了很多,都不是想要的,能清楚的解释一下吗。
Flyinsky1 2013-05-27
  • 打赏
  • 举报
回复
用到delete表,删除表2,表3,where =delete.字段。
dsb_csdn 2013-05-27
  • 打赏
  • 举报
回复
oracle的飘过,楼主加分!!

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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