Ключи SQL Server и внешние ключи - PullRequest
       331

Ключи SQL Server и внешние ключи

0 голосов
/ 13 октября 2010

Если у меня есть первичный ключ в таблице A и в таблице B той же базы данных (таблица B имеет свой собственный первичный ключ), я создаю связь с первичным ключом в таблице A, так что столбец в таблице B является внешним ключ, означает ли это, что данные первичного ключа, созданные в столбце первичного ключа таблицы A, также будут добавлены в таблицу B, поскольку они являются столбцом внешнего ключа, или мне нужно кодировать эту связь, и если да, то как мне это сделать? идти об этом?

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

В ответ на ваш вопрос:

... мне нужно кодировать эти отношения, и если да, то как мне это сделать?

Вы будетенеобходимо определить отношения между двумя таблицами.Пример:

ALTER TABLE tableB
ADD CONSTRAINT FK_tableB_TableA FOREIGN KEY (tableAId)
    REFERENCES tableA (id) ;

Когда вы вставляете запись в таблицу B, вам все равно нужно определить tableAId is.SQL Server волшебным образом не знает, что это должно быть.

Так что гипотетически, если таблица A выглядела так:

1 | Some text | 1/1/2020
2 | blah blah | 6/1/2021

Чтобы вставить запись в tableB, которая ссылается на запись 2, вам нужно будет сделатьthis:

INSERT INTO TableB (2,'My important information')

Предполагается, что таблица B имеет следующую структуру:

TableB
---------
Id --identity column/pk
tableAId --fk
SomeTextColumn
1 голос
/ 13 октября 2010

Ваш вопрос: означает ли это, что данные первичного ключа, созданные в столбце первичного ключа таблицы A, также будут добавлены в таблицу B, поскольку это столбец внешнего ключа

Нет, foriegn keys будетне вводить данные в другие таблицы.Вам понадобится запись в Таблице A, прежде чем вставлять запись, ссылающуюся на этот внешний ключ в Таблице B.

Q # 2: или я должен закодировать эту связь, и если да, то как мне это сделать?

вставить в таблицу A, а затем вставить в таблицу B. В TableA можно добавить триггер, чтобы вставить запись в TableB, когда данные были введены в таблицу A, если вы хотели ...

0 голосов
/ 13 октября 2010

Я не совсем уверен, о чем вы спрашиваете, но если вы хотите вставить одну запись в таблицу A и связанную запись в таблицу B, то вам нужно указать идентификатор из записи таблицы A в качестве значения вполе внешнего ключа в таблице B.

Вот пример: у автора таблицы есть поля id и name.

INSERT author (id, name) VALUES (5, 'James Joyce')

Теперь в таблице книги есть поля id, author_id и title.

INSERT book (id, author_id, title) VALUES(99, 5, 'Ulysses')

Если поле автора id создается автоматически, вы не указали бы его в операторе вставки и извлекли бы его значение, используя @@IDENTITY свойство .

...