Самый простой способ вставить строку с неизвестным внешним ключом, но известной информацией о других столбцах - PullRequest
2 голосов
/ 26 апреля 2011

Итак, чтобы прояснить вопрос, у меня есть таблица, которую мы назовем «tAuthor», и другая таблица, которая называется «tBook». Таблицы имеют следующие столбцы.

tAuthor

  • id - INT (PK)
  • имя - VARCHAR (50)
  • lname - VARCHAR (50)

tBook

  • id - INT (PK)
  • authorid - INT (PK)
  • имя - VARCHAR (50)

Если у меня были имена и фамилии авторов и я хотел вставить для них новую книгу в tBook, есть ли простой способ автоматически вставить оператор вставки в authorid ГДЕ fname = "Known" и lname = "Known"

Я полагал, что у меня всегда могут быть два оператора: оператор выбора, который возвращает идентификатор WHERE fname = "Known" и lname = "Known", а затем запускает оператор вставки с возвращенным идентификатором. Мне было просто любопытно, был ли другой путь?

1 Ответ

1 голос
/ 26 апреля 2011
INSERT INTO tBook (name, authorid)
VALUES(SELECT 'NewBook', id
       FROM tAuthor
       WHERE tAuthor.fname = 'FirstName'
       and tAuthor.lname = 'LastName')

Я бы не рекомендовал использовать для этого имя Автора, так как могут быть дубликаты. Однако это заявление сделает вставку, которую вы требуете. По сути, вы делаете отбор из таблицы, из которой вам нужен ваш идентификатор, и заполняете остальную информацию в виде жестко заданных значений, а не значений для извлечения. Это также отличный способ сделать несколько обновлений, если вам нужно обновить больший набор записей, которые имеют общий элемент.

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