使用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?
如果这些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的列。这是按最后插入排序的最好方法。
除此之外,这听起来像一个家庭作业问题。这不是我们想要的——搜索引擎是你的朋友。