如果我在同一个数据库的表A和表B中有一个主键(表B有自己的主键),我在表A中创建一个与主键的关系,这样表B中的一列就是外来的key,是否意味着在表A的主键列中创建的主键数据也将因为它是外键列而添加到表B中,或者我是否必须编写该关系,如果是,我该怎么做?那个?
答案 0 :(得分:3)
回答你的问题:
...我必须编写代码 关系,如果是这样,我该如何去 关于那个?
您需要定义两个表之间的关系。例如:
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
要在引用记录2的tableB中插入记录,您需要执行以下操作:
INSERT INTO TableB (2,'My important information')
这假设tableB具有以下结构:
TableB
---------
Id --identity column/pk
tableAId --fk
SomeTextColumn
答案 1 :(得分:1)
你的问:这是否意味着在表A的主键列中创建的主键数据也将因为它是外键列而被添加到表B
不,foriegn键不会将数据输入其他表。在插入引用表B中的foriegn键的记录之前,您将需要表A中的记录。
问题2:或者我是否必须编写这种关系,如果是这样,我该如何处理呢?插入表A,然后插入表B.当数据输入tableA时,可以将一个触发器放在TableA上以将记录插入TableB ...
答案 2 :(得分:0)
我不完全确定你要问的是什么,但如果你想将一条记录插入表A并将相关记录插入表B,那么你必须指定表A记录中的id作为值表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
字段,则不会在insert语句中指定它,并且您将使用@@IDENTITY property检索其值。