2011-05-05 34 views
1

我是SQL和C#的新手,目前正在尝试创建库软件。我面临一些问题,并会感谢您的意见。使用sql/c#将表中的值从一个表插入到另一个表中.net

我有三个表:

  • 图书(BookID, Title
  • 作者(AuthorID, AuthorFname, AuthorLname
  • WrittenBy(BookID, AuthorID

在表AuthorBooksAuthorIDBookId被索引并且是主键。

我需要做的是,

  • 从书本上表中获取的BOOKID,
  • 从作者表获得的AuthorID,
  • 插入这两个值到writtenby表

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

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

有没有办法在SQL中获取最后插入的值?

+0

可能的重复http://stackoverflow.com/questions/5048602/whats-the-stardard-way-of-getting-the-last-insert-id – mBotros 2011-05-05 10:48:06

+0

你如何确定哪个bookid应该链接哪个authorid? – 2011-05-05 10:50:26

+0

用户将输入这些细节到表单中。所以从它获取的数据会让我知道哪个bookid属于哪个authorid。但是当检索数据时,写的表格会让我知道哪位作者写了哪本书 – shani 2011-05-05 11:14:42

回答

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()功能将由先前的statem返回最后插入IDENTITY值恩,这应该正是你要找的,对吗?

+0

谢谢!这是我正在寻找的! – shani 2011-05-05 11:41:31

0

您应该有一个名为InsertedDate或CreatedDate的列。这是通过上次插入进行排序的最佳方式。

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

+0

我向你保证,这是我遇到的一个实际问题以及我写的一个实际问题。它不是一个家庭作业问题。我在学习这个项目时正在学习sql和c#。 – shani 2011-05-05 11:44:44

相关问题