我是SQL和C#的新手,目前正在尝试创建一个库软件。我面临一些问题,非常感谢您的意见。
我有三张桌子:
BookID, Title
)AuthorID, AuthorFname, AuthorLname
)BookID, AuthorID
)BookId
中的 Books
和表AuthorID
中的Author
被编入索引并且是主键。
我需要做的是,
我的解决方案是编写两个单独的SQL语句来选择id列,然后将其输入到第三个表中。
但是,如果有两本同名书籍呢?
有没有办法在SQL中获取最后插入的值?
答案 0 :(得分:1)
有多种方法可供选择:
@@IDENTITY
OR
SCOPE_IDENTITY()
OR
IDENT_CURRENT(‘tablename’)
答案 1 :(得分:1)
如果这些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
值,这应该是您正在寻找的,对吗?
答案 2 :(得分:0)
您应该有一个名为InsertedDate或CreatedDate的列。这是最后插入的最佳订购方式。
除此之外,这听起来像是一个家庭作业问题。这不是想要的 - 搜索引擎是你的朋友。