вставка значений из одной таблицы в другую с использованием sql / c # .net - PullRequest
1 голос
/ 05 мая 2011

Я новичок в SQL и C # и в настоящее время пытаюсь создать программное обеспечение для библиотеки.Я столкнулся с небольшой проблемой и был бы признателен за ваш вклад.

У меня есть три таблицы:

  • Книги (BookID, Title)
  • Автор (AuthorID, AuthorFname, AuthorLname)
  • WrittenBy (BookID, AuthorID)

BookId в таблице Books и AuthorID в таблице Author проиндексированы и являются первичными ключами,

Что мне нужно сделать, это

  • получить идентификатор книги из таблицы книг,
  • получить идентификатор автора из таблицы авторов,
  • вставьте эти два значения в таблицу Bybyby

Мое решение состоит в том, чтобы написать два отдельных оператора SQL, чтобы выбрать столбцы идентификаторов, а затем ввести их в третью таблицу.

Но что, если есть две книги с одинаковым названием?

Есть ли способ получить последние вставленные значения в SQL?

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Существуют разные способы:

 @@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/

1 голос
/ 05 мая 2011

Если эти столбцы идентификаторов имеют тип 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 в предыдущем выражении, которое должно быть именно тем, что вы ищете, правильно?

0 голосов
/ 05 мая 2011

У вас должен быть столбец с именем что-то вроде InsertedDate или CreatedDate.Это лучший способ заказа по последнему добавленному.

Кроме этого, это звучит как домашнее задание.Это не хочет, так что для - поисковые системы ваши друзья.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...