为了账号安全,请及时绑定邮箱和手机立即绑定

SQL Server触发器Trigger(1)

标签:
SQL Server

为了演示触发器,下面例子分别实现插入,删除触发器。

示例之前,先创建两个表,关关联起来。

代码

--创建一个表[Topic]
CREATE TABLE dbo.Topic
(
    TopicId INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
    Title NVARCHAR(300) NOT NULL,
    Content NVARCHAR(2000) NOT NULL,
    Author NVARCHAR(50) NOT NULL,
    Reply INT DEFAULT(0) NOT NULL    
)
GO

 

另外一个表,

代码

--创建另外一个表[SubTopic],其中有一字段是表[Topic]的主键,即是Foreign key
CREATE TABLE dbo.SubTopic
(
    SubTopicId INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
    TopicId INT,--外键 reference table dbo.Topic primary key
    Author NVARCHAR(50) NOT NULL,
    Content NVARCHAR(4000) NOT NULL    
)
GO

 

接下来,就是触发器实现代码,当有论题被回复时,在主表中的Reply字段加1。

代码

--为表[SubTopic]创建一个插入的触发器
CREATE TRIGGER dbo.tri_SubTopic_Insert ON dbo.SubTopic
FOR INSERT
AS
BEGIN
    SET NOCOUNT ON
    DECLARE @key INT
    SELECT @key = [TopicId] FROM inserted
    --当有记录插入时,同时更新表[Topic]的[reply]字段,回复数量添加1.
    UPDATE [dbo].[Topic] SET [Reply] = [Reply] + 1 WHERE [TopicId] = @key    
END

GO

 

当有论题被删除时,在主表中的Reply字段也相应减1。

代码

--为表[SubTopic]创建一个删除触发器
CREATE TRIGGER dbo.tri_SubTopic_Delete ON dbo.SubTopic
FOR DELETE
AS
BEGIN
    SET NOCOUNT ON
    DECLARE @key INT    
    SELECT @key = [TopicId] FROM deleted
    --在有记录删除时,同时更新表[Topic]的[reply]字段,回复数量减1.
    UPDATE [dbo].[Topic] SET [Reply] = [Reply] - 1 WHERE [TopicId] = @key    
END

GO

 

最后一个触发器,就是主表的论题被删除时,所有子表相应本论题的回复应也全部删除,

代码

CREATE TRIGGER dbo.tri_Topic_Delete ON dbo.Topic
FOR DELETE
AS
BEGIN
    SET NOCOUNT ON    
    DECLARE @key INT    
    SELECT @key = [TopicId] FROM deleted
    DELETE FROM [dbo].[SubTopic] WHERE [TopicId] = @key
END

 

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消