Если у меня есть первичный ключ в таблице A и в таблице B той же базы данных (таблица B имеет свой собственный первичный ключ), я создаю связь с первичным ключом в таблице A, чтобы столбец в таблице B есть внешний ключ, означает ли это, что данные первичного ключа, созданные в столбце первичного ключа таблицы A, также будут добавлены в таблицу B из-за того, что он является столбцом внешнего ключа или мне нужно закодировать это отношение, и если да, то как мне это сделать?Клавиши SQL Server и внешние ключи
ответ
В ответ на ваш вопрос:
... должен ли я кодировать это отношений, и если да, то как мне пойти об этом?
Необходимо определить отношения между двумя таблицами. Пример:
ALTER TABLE tableB
ADD CONSTRAINT FK_tableB_TableA FOREIGN KEY (tableAId)
REFERENCES tableA (id) ;
Когда вы вставляете запись в tableB, вам все равно необходимо определить tableAId. SQL Server не знает, как это должно быть.
Так гипотетически, если TABLEA выглядел следующим образом:
1 | Some text | 1/1/2020
2 | blah blah | 6/1/2021
Чтобы вставить запись в TableB, что ссылочного запись 2 вам нужно будет сделать это:
INSERT INTO TableB (2,'My important information')
Это предполагает TableB имеет следующую структуру :
TableB
---------
Id --identity column/pk
tableAId --fk
SomeTextColumn
Я не совсем уверен, что вы просите, но если вы хотите вставить одну запись в таблицу 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 property.
Ваш Вопрос: это означает, что первичные данные ключа, созданные в столбец первичного ключа таблицы А также будут добавлены в таблицу В силу этого является ключевым столбец внешнего
Неа, foriegn ключи не будут введите данные в другие таблицы. Вам понадобится запись в таблице A, прежде чем вставлять запись, ссылающуюся на этот ключ foriegn в таблице B.
Q # 2: или мне нужно закодировать эти отношения, и если да, то как это сделать?
вставки в TABLEA, а затем вставить в таблицу В. Триггер может быть поставлен на TableA, чтобы вставить запись в TableB, когда данные были введены в TABLEA бы вы хотели ...
благодарит вас за быстрые ответы, я думаю, что понимаю это сейчас. – simon