简体   繁体   English

在SQL Server中插入后更新触发器c#

[英]Update Trigger after an Insert in SQL Server c#

Here's the scenario I've been stuck on: 这是我一直坚持的情景:

  • User INSERTS a book into books table 用户将一本书插入书籍表
  • Books Collection UPDATES with the userid and the INSERTED bookid in bookscollection Books Collection更新了用户ID和bookscollection中的INSERTED bookid

Userid is passed from a string username in c# application. Userid从c#application中的字符串用户名传递。

bookcollection bookc_id, bookc_bookid, bookc_bookuser
books bookid, title, author, year
users userid, username, password

bookid is foreign key to bookc_bookid bookid是bookc_bookid的外键

userid is a foreign key to bookc_bookuser userid是bookc_bookuser的外键

This is how it gets inserted into books table 这是它如何插入书籍表

INSERT INTO books (title, author, year) VALUES (@title, @author, @year);

In a previous form I have used INNER JOIN clause to retrieve information from books collection based on the logged in Username string. 在以前的表单中,我使用INNER JOIN子句根据登录的用户名字符串从books集合中检索信息。

 SELECT * FROM bookcollection c 
 INNER JOIN users r ON c.bookC_userid = r.userid 
 INNER JOIN books b ON c.bookC_bookID = b.bookid 
 WHERE username LIKE '" + Username + "'"

How could I create a trigger which would update the books table with the userid and bookid. 我怎么能创建一个触发器,用于使用userid和bookid更新books表。

Simple you can create a update Trigger Like this 很简单,您可以创建更新触发器像这样

CREATE TRIGGER yourtriggername
     ON yourtablename
     AFTER  INSERT
AS
BEGIN
 /* here goes your update statement*/
   UPDATE c
   SET c.bookC_userid = r.userid,
   b.bookC_bookID= b.bookid 
   FROM bookcollection c 
   INNER JOIN users r ON c.bookC_userid = r.userid 
   INNER JOIN books b ON c.bookC_bookID = b.bookid
   Where b.bookid = SCOPE_IDENTITY(); 
end 

Edit: You can get newly inserted id of yourtable by Scope_Identity function 编辑:您可以通过Scope_Identity函数获取新插入的yourtable id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM