使用sql/c#.net将值从一个表插入到另一个表

本文关键字:一个 插入 另一个 sql net 使用 | 更新日期: 2023-09-27 17:55:06

我是SQL和c#的新手,目前正在尝试创建一个库软件。我遇到了一点问题,非常感谢你的帮助。

我有三个表:

  • Books (BookID, Title)
  • 作者(AuthorID, AuthorFname, AuthorLname)
  • WrittenBy (BookID, AuthorID)
Books中的

BookId和表Author中的AuthorID被索引,为主键。

我需要做的是,

  • 从books table中获取bookId,
  • 从作者表中获取authorID,
  • 将这两个值插入writtenby表

我的解决方案是编写两个单独的SQL语句来选择id列,然后将其输入第三个表。

但是如果有两本书有相同的标题呢?

是否有一种方法来获得最后插入的值在SQL?

使用sql/c#.net将值从一个表插入到另一个表

如果这些ID列的类型是INT IDENTITY,你正在使用SQL Server,那么是的-你可以得到最后插入的值:

INSERT INTO dbo.Books(Title) VALUES('New Book')
DECLARE @NewBookID INT
SELECT @NewBookID = SCOPE_IDENTITY()
INSERT INTO dbo.Author(AuthorFname, AuthorLname) VALUES('John', 'Doe')
DECLARE @NewAuthorID INT
SELECT @NewAuthorID = SCOPE_IDENTITY()
INSERT INTO dbo.WrittenBy(BookID, AuthorID) VALUES(@NewBookID, @NewAuthorID)

SCOPE_IDENTITY()函数将返回上一个语句最后插入的IDENTITY值,这应该正是您正在寻找的,对吗?

有不同的方法可用:

 @@IDENTITY
      OR
 SCOPE_IDENTITY()
      OR
 IDENT_CURRENT(‘tablename’)
http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

应该有一个类似InsertedDate或CreatedDate的列。这是按最后插入排序的最好方法。

除此之外,这听起来像一个家庭作业问题。这不是我们想要的——搜索引擎是你的朋友。