【问题标题】:After Update, Insert Trigger not working on Update SQL Server VB.net更新后,插入触发器在更新 SQL Server VB.net 上不起作用
【发布时间】:2017-04-09 17:04:22
【问题描述】:

我正在构建个人漫画书数据库,但我的一个 SQL Server 触发器出现问题。

我的主要漫画条目(选项卡式)表单有一个用于封面价格的组合框。

当用户单击提交并将漫画插入漫画条目页面上的数据库(comic_books 表)时,我有一个触发器,它将用户输入的封面价格添加到单独的表(comic_prices 表)中。如果条目确实如此不存在。这工作得很好。

但是,我有第二个选项卡(“编辑漫画”),用户可以在其中更新已插入的漫画,该漫画使用简单的更新脚本。 用户也可以从此标签更改或添加所述漫画的新封面价格。

我遇到的问题是,当用户单击“编辑漫画”选项卡中的“更新漫画”按钮时,如果该新输入的漫画价格不存在,则不会将其插入到 Comic_prices 表中。所以看起来我的触发器只在我的插入脚本上触发,而不是在我的更新脚本上。 同样,我有触发器只在cover_prices 表中不存在该条目时才插入,否则它什么也不做。

请在下面查看我的“更新后,插入”触发器,如果​​您需要更多信息,请告诉我! 我感谢任何指示或批评!

DECLARE @cover_price varchar(50)
   select @cover_price = cover_price from comic_books        
    If exists (SELECT cover_price FROM comic_prices where cover_price = @cover_price )
  Begin
      Return
  End
  IF not EXISTS (SELECT cover_price FROM comic_prices where cover_price = @cover_price)   
   INSERT INTO comic_prices(cover_price)VALUES(@cover_price)

【问题讨论】:

  • 经过两周左右,我终于弄明白了!

标签: sql-server vb.net triggers


【解决方案1】:

2017 年 4 月 22 日更新 大约两个星期后,我终于想通了!我最终制作了两个单独的触发器,一个用于插入,另一个用于更新。我保持插入相同,但是,更新看起来像这样:

DECLARE @publisher_name varchar(50)
    --declare @comic_id bigint
    select @publisher_name = inserted.issue_publisher from inserted
    select @comic_id = comic_id from comic_books
       If exists (select publisher_name from comic_publishers where publisher_name = @publisher_name)
  Begin
      return
  End
       IF not EXISTS (select publisher_name from comic_publishers where publisher_name = @publisher_name)
        INSERT INTO comic_publishers (publisher_name)VALUES(@publisher_name)                                                                               

我需要告诉触发器寻找插入的发布者!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多